iOS 探索alloc的底层流程

一、  在开发中我们总会遇到,当涉及到一些底层代码时,往往无法深入了解,比如我们熟悉的alloc方法

这个时候,直接去上苹果的开源网站 https://opensource.apple.com/,跟着我一步步把需要了解的源码下载下来

1.当前最新的源码是11.3,我们点击打开


2.按住cmd + F,搜索objc


3.点击打开,发现Error,可能是官方还没更新,没办法,还是按照前面1、2步,我们打开11.2的

4.成功打开后,可以看到里面的内容


5.返回上一页,我们直接下载下来


6.下载完成,打开工程


7.全局搜索"alloc {" ,好吧,终于出来,现在开始探索alloc究竟做了什么吧

二、开始探索

逐级往下查看
_objc_rootAlloc   >   callAlloc  ,发现callAlloc方法出现分歧


既然知道源码调用的方法,我们创建一个项目和一个类,并对alloc进行调用,然后在此处打上断点,

然后,使用symbolic打断点,将源码里的方法复制粘贴进去


接着,调试模式设置成汇编模式,然后运行项目


结果发现先走了 _objc_rootAllocWithZone ,然后在走 objc_msgSend

继续,回到苹果源码,从_objc_rootAllocWithZone往下走 ,最终来到_class_createInstanceFromZone方法

_class_createInstanceFromZone 做的事情比较多,不是今天的主题

结论:今天的探索可以得出alloc大概流程

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

推荐阅读更多精彩内容