美文网首页
iOS底层 -- isa、superclass指针

iOS底层 -- isa、superclass指针

作者: happy神悦 | 来源:发表于2020-09-05 23:25 被阅读0次

    1.isa指针

    • instance的isa指向class
    • class的isa指向meta-class
    • 当调用对象方法时,通过instance的isa找到class,最后找到对象方法的实现进行调用
    • 当调用类方法时,通过class的isa找到meta-class,最后找到类方法的实现进行调用

    2.class对象的superclass指针

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

    3.meta-class对象的superclass指针

    image.png
    • Student的meta-class的superclass指向Person的meta-class
    • Person的meta-class的superclass指向NSObject的meta-class
    • 当Student的class要调用Person的类方法时,会先通过isa找到Student的meta-class,然后通过superclass找到Person的meta-class,最后找到类方法的实现进行调用

    4.isa、superclass总结

    ias指针

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

    superclass指针

    • class的superclass指向父类的class(如果没有父类,superclass指针为nil)
    • meta-class的superclass指向父类的meta-class
    • 基类的meta-class的superclass指向基类的class

    instance调用对象方法的轨迹

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

    class调用类方法的轨迹

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

    相关文章

      网友评论

          本文标题:iOS底层 -- isa、superclass指针

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