isa指针

isa:是一个Class 类型的指针. 每个实例对象有个isa的指针,他指向对象的类,而Class里也有个isa的指针, 指向meteClass(元类)。元类保存了类方法的列表。当类方法被调用时,先会从本身查找类方法的实现,如果没有,元类会向他父类查找该方法。同时注意的是:元类(meteClass)也是类,它也是对象。元类也有isa指针,它的isa指针最终指向的是一个根元类(root meteClass).根元类的isa指针指向本身,这样形成了一个封闭的内循环。

元类:元类是类对象的类,类对象是元类的实例。

1.我们以前调用"+"开头的类方法实际是在调用元类的对象方法

2.由于每个类有且只有一个,所以每个类对象都是其对应元类的单例

1.每个实例对象的类都是类对象,每个类对象的类都是元类对象,每个元类对象的类都是根元类(root metaclass的isa指向自身)2.类对象的父类最终继承自根类对象NSObject,NSObject的父类为nil3.元类对象(包括根元类)的父类最终继承自根类对象NSObject

可见,类与元类是一个闭环。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容