问:一个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对象