窥探NSObject

NSObject是基于 C C++ 结构体来实现的,可以理解为下图

窥探NSObject_第1张图片
NSObject 结构体


窥探NSObject_第2张图片
代码说明

网上很多教程都有如下图介绍:

窥探NSObject_第3张图片
已经过时的结构图


窥探NSObject_第4张图片
最新的结构图


窥探NSObject_第5张图片
objc_class


窥探NSObject_第6张图片
info
窥探NSObject_第7张图片
最新的整体结构

1. 如果是instance对象,isa指向class对象

2. 如果是class对象,isa指向meta-class(元类)对象

3. 如果是meta-class对象的isa指向基类的meta-class对象

类信息存放在哪里?

1. 如果是成员变量的具体值存放在instance对象中

2. 对象方法/协议/属性/成员变量信息存放在class对象中

3. 类方法信息存放在meta-class 对象中

窥探NSObject_第8张图片
class信息


窥探NSObject_第9张图片
meta-class信息


窥探NSObject_第10张图片
官方示意图

你可能感兴趣的:(窥探NSObject)