OC探索底层原理的思路

一探索方式?

1.下一个符号断点Symbolic Breakpoint

2.打开反汇编显示

3.直接下代码断点

具体操作方式为 Control+ in  ,in是指下图的向下的箭头按钮



二探索libObjc源码

我们下载了 libObjc 的源码到我们的电脑上后是不能直接运行的,我们需要进行一定的配置才能实现源码追踪流程

下载链接    下载链接配置介绍

配置好 libObjc之后,新建一个项目,然后运行如下代码:

1.alloc分析

Person *objc  = [Person alloc];

然后我们直接下符号断点objc_alloc,这样就会先来到的是objc_alloc


之后会开始开辟内存和且绑定到相应的类

核心方法:

1.cls->instanceSize(extraBytes); //需要计算出需要的内存空间小大

2.calloc                                         /向/系统申请开辟内存,返回指针地址

3.obj->initInstanceIsa(cls, hasCxxDtor); //关联到相应的类

alloc执行流程图

三init分析

init相比alloc来说,init内部实现比较简单,先来到的是 _objc_rootInit 然后就直接返回 obj了。其实这里是一种抽象工厂设计模式的体现,对于 NSObject自带的 init方法来说,其实什么也没干,但是如果你继承于 NSObject的话,然后就可以去重写 initWithXXX 之类的初始化方法来做一些初始化操作。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。