美文网首页iOS底层探索之路 下
iOS底层第二天--内存分配

iOS底层第二天--内存分配

作者: 三月木头 | 来源:发表于2020-03-26 17:50 被阅读0次

    1、获取内存大小方法

    1、 得到一个对象所需大小 class_getInstanceclass
    2、如何得到一个对象实际分配大小 malloc_size
    3、sizeof() 获取某个类型的内存大小,是运算符(编译时即确定)

    内存对齐:系统的内存对齐 同 结构体的内存对齐不同。
    结构体内存对齐:必须是最大成员大小的倍数。
    iOS系统内存对齐:内存分配都是16字节倍数。

    2、OC对象分类

    OC中对象分为三类:Instance实例对象、Class 类对象、 Meta_Class 元类对象。 也就是我们系统内存中存在这些对象。

    3、OC对象获取方法

    Instance实例对象:
    Person *personInstance =[ [Person alloc] init];
    
    Class 类对象:
    Person  personClass = [Person Class] ;
    Person  personClass = object_getClass(personInstance ); ;
    
    Meta_Class 元类对象:
    Person  personMetaClass = object_getClass(personClass);
    

    4、OC不同对象内部存放的什么?

    Instance实例对象:”内存中可以多个实例对象。也就是一个类可以生成多个实例对象存在内存中。

    Class 类对象 :一个类的类对象是唯一的,内存中只有一份,指针地址一样。

    Meta_Class 元类对象:每个类在内存中有且只有一个元类对象。

    instance实例对象 class类对象 meta_class 元类对象
    一个类可以生成多个实例对象存在内存中 一个类的类对象是唯一的,内存中只有一份 每个类在内存中有且只有一个元类对象
    isa指针、成员变量的具体值 isa指针、superClass指针、属性、对象方法(-方法)、协议、成员变量的描述信息(成员变量的名称、类型) isa指针、superClass指针、类方法(+方法)

    Class 类对象 和 Meta_Class 元类对象内存结构一样。本质都是struct objc_class结构体

    搜狗截图20200326174610.png

    相关文章

      网友评论

        本文标题:iOS底层第二天--内存分配

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