-
对象的isa指针指向哪里?
instance对象的isa指向class对象
class对象的isa指向meta-class对象
meta-class对象的isa指向基类的meta-class对象 -
OC的类信息存放在哪里?
对象方法、属性、成员变量、协议信息,存放在class对象中
类方法,存放在meta-class对象中
成员变量的具体值,存放在instance对象
在instance对象中,包含的信息有:
1.isa指针
isa指针指向的内存关系图-
instance的isa指向class
当调用对象方法时,通过instance的isa找到class,最后找到对象方法的实现进行调用 -
class的isa指向meta-class
当调用类方法时,通过class的isa找到meta-class,最后找到类方法的实现进行调用
2.class对象的superclass指针
class对象的superclass指针- 当Student的instance对象要调用Person的对象方法时,会先通过isa找到Student的class,然后通过superclass找到Person的class,最后找到对象方法的实现进行调用
3.meta-class对象的superclass指针
meta-class对象的superclass指针- 当Student的class要调用Person的类方法时,会先通过isa找到Student的meta-class,然后通过superclass找到Person的meta-class,最后找到类方法的实现进行调用
4.isa,superclass总结
isa,superclass1.instance的isa指向class
2.class的isa指向meta-class
3.class的superclass指向父类的class
如果没有父类,superclass指针为nil
4.meta-class的superclass指向父类的meta-class
基类的meta-class的superclass指向基类class
5.instance调用对象方法的轨迹
isa找到class,方法不存在,就通过superclass找父类
6.class调用类方法的轨迹
isa找meta-class,方法不存在,就通过superclass找父类
网友评论