本文主要是介绍isa指针,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在程序员眼中,万物皆对象。所以说身为一个程序员没对象?开玩笑!!!!
在iOS开发中我们经常会碰到各种各样的调试方案,然后在调试的过程当中会发现每个对象都会有一个isa指针
很显然,这是我自己创建的一个RootViewController的类。
isa指针指的是类的本身。
认识什么是isa指针,我们得先明确一点:
在Objective-C中,任何类的定义都是对象。类和类的实例(对象)没有任何本质上的区别。任何对象都有isa指针。
那么什么是类呢?
Class 是一个 objc_class 结构类型的指针, id是一个 objc_object 结构类型的指针.
稍微解释一下
isa:是一个Class 类型的指针. 每个实例对象有个isa的指针,他指向对象的类,而Class里也有个isa的指针, 指向meteClass(元类)。元类保存了类方法的列表。当类方法被调用时,先会从本身查找类方法的实现,如果没有,元类会向他父类查找该方法。同时注意的是: 元类(meteClass)也是类,它也是对象。 元类也有isa指针,它的isa指针最终指向的是一个根元类(root meteClass).根元类的isa指针指向本身,这样形成了一个封闭的内循环.
每一个对象本质上都是一个类的实例。其中类定义了成员变量和成员方法的列表。对象通过对象的isa指针指向类。
每一个类本质上都是一个对象,类其实是元类(meteClass)的实例。元类定义了类方法的列表。类通过类的isa指针指向元类。
所有的元类最终继承一个根元类,根元类isa指针指向本身,形成一个封闭的内循环
这篇关于isa指针的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!