OC对象的本质揭秘:全面理解alloc、isa、superClass、instance、class、meta_class
2023-10-16 02:41:17
OC对象介绍
OC对象是Objective-C编程中的基本单位,也是程序操作和数据存储的基本单元。OC对象由三部分组成:isa指针、instance变量和class变量。
isa指针
isa指针指向对象的class对象,它决定了对象的类型。当OC对象被创建时,会首先为它分配内存空间,然后将isa指针指向对象的class对象。isa指针对于OC对象非常重要,它决定了对象的类型和行为。
instance变量
instance变量是对象的实例变量,它存储了对象特有的数据。instance变量在对象创建时分配内存空间,并且只能被该对象访问。
class变量
class变量是对象的类变量,它存储了所有该类对象的共用数据。class变量在类创建时分配内存空间,并且可以被该类的所有对象访问。
OC对象内存分配过程
当OC对象被创建时,会首先为它分配内存空间。内存空间的分配过程如下:
- 系统首先为对象的isa指针分配内存空间。
- 系统为对象的instance变量分配内存空间。
- 系统为对象的class变量分配内存空间。
- 系统将对象的isa指针指向对象的class对象。
OC对象中的isa和superClass
isa指针指向对象的class对象,class对象中存储了对象的类型信息和方法实现。superClass指针指向对象的父类对象,父类对象中存储了父类对象的类型信息和方法实现。
OC对象中的instance对象、class对象和meta_class对象
OC对象分为instance对象、class对象和meta_class对象。instance对象是普通对象,它存储了对象特有的数据。class对象是类的对象,它存储了类的类型信息和方法实现。meta_class对象是类的类的对象,它存储了类的类型信息和方法实现。
总结
OC对象是OC编程中的基本单位,它由isa指针、instance变量和class变量组成。OC对象的内存分配过程分为四个步骤:分配isa指针内存空间、分配instance变量内存空间、分配class变量内存空间和将isa指针指向对象的class对象。OC对象中的isa指针指向对象的class对象,class对象中存储了对象的类型信息和方法实现。superClass指针指向对象的父类对象,父类对象中存储了父类对象的类型信息和方法实现。OC对象分为instance对象、class对象和meta_class对象。instance对象是普通对象,它存储了对象特有的数据。class对象是类的对象,它存储了类的类型信息和方法实现。meta_class对象是类的类的对象,它存储了类的类型信息和方法实现。