OC对象的内存:一个NSObject对象占多少内存?

2021-09-10  本文已影响0人  没有黑眼圈de熊猫

问:一个NSObject对象占多少内存?

答:NSObject 对象占16个字节的内存。NSObject本质上一个包含isa指针的结构体。结构体在内存中占8个字节的内存。但是根据iOS系统内存对齐原则,最低分配16个字节。但是内部使用了8个字节

问:OC对象的分类

答:主要分为三种:instacne 对象(实例对象),class对象 (类对象),meta-calss对象 (元类对象)

instance 对象是通过类alloc出来的对象,每次调用alloc都会产生新的instance对象

instance对象在内存中存储的信息包括:isa指针和其他成员变量

类对象,可通过object_getClass获取每个类在内存中有且只有一个class对象

class对象在内存中存储的信息包括:isa指针,superclass指针,类的属性信息(@property)类的对象方法信息(instance method)减号开头的方法,

类的协议信息(protocol)类的成员变量信息(ivar)比如成员变量的类型,名称等

class方法返回的一直是类对象

元类对象

可通过 Class objectMetaClass = object_getClass([NSObject Class]);  类对象放入

objectMetaClass 是NSObject的meta-Class对象(元类对象)

每个类在内存中都有且仅有一个元类对象

元类对象和class对象的内存结构是一样的。但是用途不一样,在内存中存储的信息主要是:

isa指针

superclass的指针

类的类方法信息(class method)加号开头的方法

问:object_getClass 方法返回

答:如果是instance对象,返回class对象

如果是class对象,返回meta-class对象

如果是meta-class对象,返回NSObject(基类)的meta-class对象

上一篇 下一篇

猜你喜欢

热点阅读