下载objc4源码:opensource.apple.com/tarballs/
-
打开项目,搜索:
struct objc_class,发现runtime.h中:可以发现:其中有
isa指针,superclass指针,ivar成员变量,method_list方法列表,cache缓存,protocol_list协议列表。不过值得注意的是,这个结构体在OBJC2以后已经被抛弃了:
OBJC2_UNAVAILABLE。 -
所以我们继续寻找最新的结构:
查看objc_object结构如下,其实其中就是存放着isa指针:
最终分析结果如下:
其实新的结构体和老的结构体没有本质上的区别,该有的主要特征信息都有了,而且还多了一些成员变量。