1.isa
类和对象都可以看作一个对象,以上面的表为例,BoyStudent虽然是个类,但它也是个类对象,而BoyStudent这个类对象所属的类就是它的元类,换言之,BoyStudent就是meteClass的实例。 对于表中的meteClass他们虽然都是元类,但也是有父类、子类的层级关系的。
下面再说isa:
isa 就是一个Class类型的指针,每一个实例对象都有一个指向对象所属类的指针,例上图的小明的isa指向BoyStudent,BoyStudent的isa指向meteClass,这两个例子里面的关系是相同的,就是指向所属的类,这就是isa指针
所有元类最终集成一个根元类,根源类的isa指向自己,形成一个封闭的内循环。
由图上可知 Class是一个objc_class
类型的指针 objc_object
类型的指针
这里先看objc_object
的定义,注意上图
再看objc_class的定义,上图
二者都有一个Class类型的指针isa,指向它所属的类
objc_class 里面的
super_class:父类
name:名称
version:类的版本信息
info:提供运行期的一些位标识
objc_ivar_list *ivars 实例变量表
objc_method_list **methodLists 类方法列表
当类方法被调用时,先会从本身查找类方法的实现,如果没有,元类会向他父类查找该方法。同时注意的是:元类(meteClass)也是类,它也是对象。元类也有isa指针,它的isa指针最终指向的是一个根元类(root meteClass).根元类的isa指针指向本身,这样形成了一个封闭的内循环。
点击查看更多内容
2人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦