返回
iOS探索底层-类的结构探索(上)
IOS
2023-11-10 13:35:46
前言
在上篇文章《iOS底层探索——对象的本质&isa分析》中,我们揭开了对象中包含的isa指针的神秘面纱,并通过isa指针,从对象中找到了它所属的类。今天,我们将继续深入探索类的秘密,揭示其内部结构。
类结构剖析
1. 元类
每个类都有一个对应的元类,它负责管理该类的元数据信息,例如类名、类方法和属性列表。元类的类名以一个前缀“__NSCFType”开头,并且它的isa指针指向根元类NSObject的元类。
2. 实例变量列表
类中定义的实例变量被存储在一个结构体中,称为实例变量列表。它包含每个实例变量的偏移量、类型信息和名称。
3. 方法列表
类中的方法被存储在两个数组中:实例方法列表和类方法列表。实例方法列表包含指向实例方法实现的指针,而类方法列表包含指向类方法实现的指针。
4. 协议列表
类中采用的协议被存储在一个协议列表中。协议列表包含指向被采用协议的指针。
5. 超类
类的超类被存储在一个称为“superclass”的指针中。它指向父类的类对象。
类结构图示
+---------------------------------------------+
| |
| 类对象 |
| |
+---------------------------------------------+
| |
| 元类 |
| |
+---------------------------------------------+
| |
| 实例变量列表 |
| |
+---------------------------------------------+
| |
| 实例方法列表 |
| |
+---------------------------------------------+
| |
| 类方法列表 |
| |
+---------------------------------------------+
| |
| 协议列表 |
| |
+---------------------------------------------+
| |
| 超类 |
| |
+---------------------------------------------+
总结
通过探索类的结构,我们揭示了它内部管理信息的机制。这些元数据元素构成了类的骨架,使它能够存储和处理与其自身及其实例相关的信息。随着我们对iOS底层的不断探索,我们将继续深入了解这些结构的内部运作方式,揭开iOS系统的更多秘密。