阅读 88

class对象的superclass指针及 meta-class对象的superclass

class对象的superclass指针 子类的实例对象要调用   父类的实例方法。

该如何调用???

首先,子类的实例对象 去子类中找实例方法。

找到就调用,如果没有找到,就去父类中找 实例方法。

然后调用。

子类找父类需要一个指针就是superclass指针。

Student继承Person  Person继承NSObject

image.png

当Student的instance 对象需要调用person的对象方法时,会先通过isa找到Student的class,然后通过superclass找到Person的class,最后找到对象方法的实现进行调用。

如果最终没有找到呢???有机会再来讨论。

meta-class对象的superclass

当student的class要调用Person的类方法时,该怎么办?

当student的class要调用Person的类方法时,

会先通过isa找到Student的meta-class,

然后通过superclass找到Person的meta-class,最后

找到类方法的实现进行调用。

image.png

isa、superclass总结

image.png

instance的isa指向class

class的isa指向meta-class

meta-class的isa指向基类的meta-class

class的superclass指向父类的class

如果没有父类,superclass指针为nil

meta-class的superclass指向父类的meta-clas

基类的的meta-class的superclass指向基类的class

instance调用对象方法的轨迹。

isa找到class,方法不存在,就通过superclass找父类。

class调用类方法的轨迹。

isa找到meta-class,方法不存在,就通过superclass找父类

如果再找不到,会触发runtime中消息转发机制,以后再说。。。。。。


作者:用户2109385917629
链接:https://juejin.cn/post/7020422737784995854


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐