继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

iOS学习笔记--isa的简介

ZKReadStone
关注TA
已关注
手记 52
粉丝 32
获赞 323

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指针指向本身,这样形成了一个封闭的内循环。

打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP