-
instance 的 isa指针 指向 class
-
class 的 isa指针 指向 meta-class
-
meta-class的 isa指针 指向 基类的meta-calss
-
class的superclass指向父类的class
- 如果没有父类,superclass指针为nil
-
meta-calss的superclass指向父类的meta-calss
- 基类的meta-class的superclass指向基类的class
-
instance调用对象方法的轨迹
- isa先找到class,方法不存在,就通过superclass找父类
-
class调用的类方法的轨迹
- isa找到meta-class,方法不存在,通过superclass找到父类
问题1: oc对象的isa指针指向哪里?
- 如果是instance对象: isa指针指向class对象
- 如果是class对象: isa指针指向meta-class对象
- 如果是meta-class对象: isa指针指向基类的meta-class对象
问题2: oc类信息存放在哪里?
- instance对象: 成员变量的具体值
- class对象: 对象方法、属性、成员变量描述信息、协议信息
- meta-class对象: 类方法
网友评论