isa 结构分析

228 阅读1分钟

问题/目标分析

【NSObject alloc】分析中initisa流程分析.

方法分析

通过对OBJC的源码,对alloc 方法,进行逐步断点跟踪解析。
配置好的源码
如果想调试最新版本,可以自己配置项目:
官方源码下载地址:opensource.apple.com macOS-> objc4 -> 右边箭头 下载最新版本
源码配置方法:配置方法 (注意,文章最后target的设置需要添加一步,不然断点不能跟进,设置如下:)

pic

实验步骤

进入断点initisa()

结果分析

initisa结构图。

isa对应bit信息

总结实验

isa 为一个union结构union,存储的是类别的metaclass信息,以及一些其他类别上的信息,如:内存计数,引用的状态,metaclass指针。其中读取metaclass指针需要使用isamask。

下一步:对比isa/superisa_super 对比实验