美文网首页
对象的内存存储细节

对象的内存存储细节

作者: 越天高 | 来源:发表于2019-02-20 08:43 被阅读1次

1. 对象的存储细节

  • 类创建对象,每个对象在内存中都占据一定的存储空间,每个对象都有一份属于自己的单独的成员变量,所有的对象公用类的成员方法,方法在整个内存中只有一份,类本身在内存中占据一份存储空间,类的方法存储于此。


    dxdccxj.png

2. isa指针

创建对象的时候返回的地址其实就是类的第0个属性的地址,也就是isa这个属性的地址,是系统帮我们添加的,isa是一个指针, 占8个字节

  • 每一个对象都包含一个isa指针.这个指针指向当前对象所属的类。

  • [p eat];表示给p所指向的对象发送一条eat消息,调用对象的eat方法,此时对象会顺着内部的isa指针找到存储于类中的方法(类的方法列表),执行。类方法直接去找类对象,然后找到方法执行

  • isa是对象中的隐藏指针,指向创建这个对象的类。
    通过isa指针我们可以在运行的时候知道当前对象是属于那个Class(类)的

3.使用一个类创建多个对象

Car *car1 = [Car new];
Car *car2 = [Car new]
cxdcj.png

相关文章

  • 1.1.0. 对象的存储细节

    目录 对象的存储细节 isa指针 使用一个类创建多个对象 1.对象的存储细节 类创建对象,每个对象在内存中都占据一...

  • 对象的内存存储细节

    1.对象的存储细节 通过类创建对象开辟存储空间,通过new方法创建对象会在堆内存中开辟一块存储空间初始化所有属性返...

  • 对象的内存存储细节

    1. 对象的存储细节 类创建对象,每个对象在内存中都占据一定的存储空间,每个对象都有一份属于自己的单独的成员变量,...

  • oc对象在内存中的存储细节

    1.对象的存储细节 类创建对象,每个对象在内存中都占据一定的存储空间,每个对象都有一份属于自己的单独的成员变量,所...

  • Objective-C基础学习之对象的存储细节

    1.对象的存储细节 类创建对象,每个对象在内存中都占据一定的存储空间,每个对象都有一份属于自己的单独的成员变量,所...

  • 内存存储细节

    堆区: 类对象(方法列表), 实例对象(isa指针, 属性列表) 栈区:指针 类方法比实例方法执行效率高

  • 深浅拷贝

    前置知识 基本类型直接存储于栈内存中对象类型的值存储于堆内存中,对象的属性值存储的只是它的堆内存的地址(指针)。 ...

  • 笔记:数组的内存分配 , 排序算法,数组和函数之间的关系

    #mark- 01-数组内存存储细节 //问题:变量和数组在内存中存储的区别? 注意作图分析内存 1.变量在内存中...

  • 4.引用

    变量:对象的引用 变量存储对象的内存地址 对象:堆内存 变量:栈内存 python不用声明变量类型,但对象有类型,...

  • 堆和栈的区别

    栈内存用于存储基本类型变量和对象的引用;堆内存用来存储java中的对象。栈和堆.png 栈内存属于单个线程,每个线...

网友评论

      本文标题:对象的内存存储细节

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