iOS底层原理探索—class的本质

本文深入探讨了iOS中class对象的底层原理,包括其在内存中的表示形式、结构体内容及其演变过程。作者解析了源码,揭示了class对象在OC2.0之后的结构变化,强调了class_rw_t和class_ro_t在class结构体中的作用,以及它们与方法列表、属性列表和协议列表的关系。文章以一张结构图总结了struct objc_class的组成,并预告了接下来将要探讨的KVO本质。
摘要由CSDN通过智能技术生成

探索底层原理,积累从点滴做起。大家好,我是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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值