探索底层原理,积累从点滴做起。大家好,我是Mars。上文iOS底层原理探索—OC对象的本质中总结了OC对象的底层原理,在结尾补充中简单展示了class底层结构体的内容,今天让我们继续探索class的本质。
在OC中,类对象(class对象)和元类对象(meta-class对象)的本质结构都是struct objc_class
指针,即在内存中就是结构体
Class clas = [NSObject class];
来到class底层源码,我们可以看到:
typedef struct objc_class *Class;
class对象其实是一个objc_class
结构体的指针。因此我们可以说类对象或元类对象在内存中其实就是objc_class
结构体。
相信很多人在查看源码或者看一些底层博客的时候,经常会看到下面一段代码,来讲述class的内部结构:
typedef struct objc_class *Class;
struct objc_class {
Class _Nonnull isa OBJC_ISA_AVAILABILITY;
#if !__OBJC2__
Class _Nullable super_class OBJC2_UNAVAILABLE;
const char * _Nonnull name OBJC2_UNAVAILABLE;
long versi