为了账号安全,请及时绑定邮箱和手机立即绑定

iOS学习笔记--isa的简介

标签:
iOS

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人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
32
获赞与收藏
322

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消