美文网首页
iOS alloc 底层分析

iOS alloc 底层分析

作者: 程序员进阶 | 来源:发表于2021-08-21 09:18 被阅读0次

1、

苹果开源代码地址:https://opensource.apple.com

这个地址用的更直接 https://opensource.apple.com/tarballs/ 

2、

alloc流程图

图片来自水印   

3、

底层分析的三种思维方式:    

1: 下断点 :control+in       objc_alloc

2: 汇编 跟流程 - 符号断点: objc_alloc

3: 下符号断点(objc_alloc) 确定未知 : libobjc.A.dylib`+[NSObject alloc]:    

4、alloc申请内存:

字节对齐

对象属性在内存中的布局

5、

iOS isa深入理解之isa指向流程

https://www.jianshu.com/p/0f9eeb72fe60

通过[NSObject alloc]创建的实例对象,其实就是objc_object的实例,而其中的isa指向的是由objc_class创建的类对象。并且还有几点细节,分别是

1、objc_class是objc_object的子类;

2、objc_class除了由objc_object继承带来的isa,还是自己的superClass指针; (其实还有其他一些成员变量如cache和bits,不过我们这里先不做讨论)

根据

结论1:实例对象的isa指向的内容是对应的类对象信息

结论2:类对象的superclass指向父类对应的类对象

结论3:所有元类的isa都指向NSObject 对应的元类我们称其为根元类

结论4:根元类的superclass指针指向NSObject的类对象,其他子元类的superclass指针指向对应父类的元类。

可得出如下经典的图,也是iOS十分重要的一个图。

isa流程图

相关文章

网友评论

      本文标题:iOS alloc 底层分析

      本文链接:https://www.haomeiwen.com/subject/xccfiltx.html