isa指针

作者: MrBMask | 来源:发表于2018-08-14 22:51 被阅读0次
    • 对象的isa指针指向哪里?
      instance对象的isa指向class对象
      class对象的isa指向meta-class对象
      meta-class对象的isa指向基类的meta-class对象

    • OC的类信息存放在哪里?
      对象方法、属性、成员变量、协议信息,存放在class对象中
      类方法,存放在meta-class对象中
      成员变量的具体值,存放在instance对象

    在instance对象中,包含的信息有:

    1.isa指针
    isa指针指向的内存关系图
    • instance的isa指向class
      当调用对象方法时,通过instance的isa找到class,最后找到对象方法的实现进行调用

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

    2.class对象的superclass指针
    class对象的superclass指针
    • 当Student的instance对象要调用Person的对象方法时,会先通过isa找到Student的class,然后通过superclass找到Person的class,最后找到对象方法的实现进行调用
    3.meta-class对象的superclass指针
    meta-class对象的superclass指针
    • 当Student的class要调用Person的类方法时,会先通过isa找到Student的meta-class,然后通过superclass找到Person的meta-class,最后找到类方法的实现进行调用
    4.isa,superclass总结
    isa,superclass

    1.instance的isa指向class
    2.class的isa指向meta-class
    3.class的superclass指向父类的class
    如果没有父类,superclass指针为nil
    4.meta-class的superclass指向父类的meta-class
    基类的meta-class的superclass指向基类class
    5.instance调用对象方法的轨迹
    isa找到class,方法不存在,就通过superclass找父类
    6.class调用类方法的轨迹
    isa找meta-class,方法不存在,就通过superclass找父类

    相关文章

      网友评论

        本文标题:isa指针

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