美文网首页
OC对象的内存:一个NSObject对象占多少内存?

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

作者: 没有黑眼圈de熊猫 | 来源:发表于2021-09-10 12:43 被阅读0次

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

    相关文章

      网友评论

          本文标题:OC对象的内存:一个NSObject对象占多少内存?

          本文链接:https://www.haomeiwen.com/subject/uhngwltx.html