美文网首页
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