美文网首页
对isa的理解

对isa的理解

作者: guoshengboy | 来源:发表于2020-04-28 17:22 被阅读0次
    图1.png

    我们可以从图1看到 NSObject有一个属性isa用Class来定义,那么我点击Class接着看


    图2.png

    我们可以从图2可以看到Class是objc_class的一个指针,那么我们可以认为图1的isa是一个类对象,由于类是一个类对象,我们可以认为他是另外一个类的单利,那么这个类我们称为元类,点击objc_class接着看元类如何定义
    我们点击objc_class点击查看


    图3.png

    图3我们可以看到也有一个isa 他会指向根元类, 根元类会指向自己

    总结:
    每一个实例对象里面都有一个isa指针,指向class类对象;

    每一个class类对象里面有一个isa指针,指向metaclass元类对象;
    每一个class类对象里面有一个superclass指针,指向其父类的class类对象;其父类的class类对象里面也有一个superclass指针,指向根类对象;根类对象中的superclass指针为nil(而不是第二张图中的没有);

    每一个metaclass元类对象里面有一个superclass指针,指向其父类的metaclass元类对象;最终指向RootMetaClass,RootMetaClass的superclass指针指向NSObject,即根类
    每一个metaclass元类对象有一个isa指针,指向根元类对象;根元类对象的isa指针指向自己;

    class类对象中的objc_method_list为对象方法;
    metaclass元类中存放的objc_method_list是类方法;

    相关文章

      网友评论

          本文标题:对isa的理解

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