美文网首页
底层原理总结 — 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