美文网首页
iOSisa指针和superclass指针

iOSisa指针和superclass指针

作者: nickNic | 来源:发表于2021-04-12 16:39 被阅读0次

    isa指针
    实例对象的isa指向类对象
    类对象的isa指向元类对象
    元类对象的isa指向基类的元类
    如何证明上面所述
    可以通过lldb指令打印实例对象的isa地址和类对象的地址你可以发现两者打印的地址值是一摸一样的

    superclass指针
    类对象的superclass指向父类的类对象
    如果没有父类, superclass指向nil
    meta-class的superclass指向父类的meta-class
    基类的meta-class的superclass指向基类的class
    如何证明上面所述
    可以通过lldb指令打印类对象的superclass地址和父类对象的地址你可以发现两者打印的地址值是一摸一样的

    instance 调用对象方法的轨迹
    isa找到class,方法不存在,就通过superclass找父类看看里面有没有要找的对象方法

    class 调用类方法的轨迹
    isa找到meta-class,方法不存在,就通过superclass找父类的meta-class看看里面有没有要找的类方法
    如果父类的meta-class 里面也没有那么就会找父类的class,在还没找到就会报
    unrecognized selector sent to class

    对象isa指针指向哪里
    实例对象的isa指向类对象
    类对象的isa指向元类对象
    元类对象的isa指向基类的元类

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

    738923-20200827184125974-1510726405-2.png

    相关文章

      网友评论

          本文标题:iOSisa指针和superclass指针

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