美文网首页
底层原理总结 — isa和superclass

底层原理总结 — isa和superclass

作者: 踩坑小分队 | 来源:发表于2020-02-08 21:29 被阅读0次

isa指针的作用

image.png
  • instanceisa指向class
    当调用对象方法时,通过 instanceisa找到class,最终找到对象方法进行调用

  • classisa指向meta-class
    当调用类方法时,通过classisa找到meta-class,最终找到类方法进行调用

class 的 superclass 的作用

image.png

场景:
Student调用init方法

1、通过Student的isa指针找到Student的class
2、通过Student的class的superclass指针找到Person的class
3、通过Person的class的superclass指针找到NSObject的class
4、最终找到对象方法init方法,进行调用

meta-class的superclass的作用

image.png

场景:
Student调用alloc方法

[Person alloc]

1、通过Student类的isa指针找到Student的meta-class
2、通过Student的meta-class的superclass找到Person的meta-class
3、通过Person的meta-class的superclass找到NSObject的meta-class
4、找到NSObject的meta-class中的alloc类方法,进行调用

总结:

  • instance的isa指向class

  • class的isa执行meta-class

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

  • class的superclass指向父类的class
    如果没有父类,class的superclass指向nil

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

  • 对象方法调用轨迹
    对象通过isa找到class,方法不存在,通过class的superclass找父类,然后再找对象方法

  • 类方法调用轨迹
    类通过isa找到meta-class,方法不存在,通过meta-class的superclass找父类,然后再找类方法

image.png

相关文章

网友评论

      本文标题:底层原理总结 — isa和superclass

      本文链接:https://www.haomeiwen.com/subject/vbaithtx.html