美文网首页
IOS 内存斗争小史之 对象、指针、内存的基本理解

IOS 内存斗争小史之 对象、指针、内存的基本理解

作者: CC_iOS | 来源:发表于2017-02-13 17:02 被阅读0次

作者唯一QQ:228544117

1、指针和对象,都是内存块。一个大,一个小。一个在栈中,一个在堆中。

2、iOS中,我们可以生命一个指针,也可以通过alloc获取一块内存。

3、我们可以直接消灭掉一个指针,将其置为nil。但是我们没办法直接消灭一块对象内存。对于对象内存,我们永远只能依靠系统去回收。而什么时候回收,就需要使用苹果为我们提供了“对象所有权”机制。当一个对象没有被任何指针拥有时,这块对象内存将被系统回收。如果,这个对象是你自定义的,需要自己实现dealloc方法。告诉系统你想怎么回收。

4、将一个指针置为nil,并不会告诉系统,它放弃对其所指向对象的所有权。相当于一个人突然死了,但是没立遗嘱告诉别人,他的财产,它不要了。那么,别人都不能动它的财产。所以,当我们不需要一个指针时,我们首先要让它发送release消息,告诉系统,我指向的对象,我以后不用了。再见!此时,这个指针才能死的瞑目。

5、不再使用一个指针时,最好将其设置为nil,避免其成为野指针(即,已经没有对象属于它的指针),相当于一穷二白的人,身无长物,不拥有任何对象。

相关文章

  • IOS 内存斗争小史之 对象、指针、内存的基本理解

    作者唯一QQ:228544117 1、指针和对象,都是内存块。一个大,一个小。一个在栈中,一个在堆中。 2、iOS...

  • 4-1 内存管理

    1.内存布局 2.iOS内存管理方案 [isa指针保存了内存管理的信息] 2.iOS内存管理方案 [isa指针...

  • 浅拷贝与深拷贝

    写在前面 浅拷贝:指向对象所在内存指针的拷贝,对象所在内存不变 深拷贝:对象所在内存重新拷贝一份 在 iOS 中,...

  • 内存管理:不看白不看,看了就是赚

    一、iOS的内存管理方式 1、小对象的内存管理 -- Tagged Pointer 2、普通对象的内存管理 -- ...

  • JVM对并发分配内存处理方式

    内存分配部分 为对象分配内存的基本方法:指针碰撞法、空闲列表法 内存分配并发问题的解决:CAS、TLAB JVM对...

  • js 对象深拷贝与浅拷贝

    js基本数据类型与对象指针(引用地址)存放在栈内存,对象实际存放在堆内存。变量标志符和值(基本数据和指针)保存在栈...

  • 链接收藏

    iOS面试题 野指针 使用了释放的内存 内存泄漏 内存没有释放

  • iOS 常见面试题总结

    1. 空指针、野指针以及僵尸对象的理解,如何避免野指针错误。解答:内存被释放的对象为僵尸对象(不能再使用的对象)。...

  • iOS内存管理

    iOS内存管理机制 基本数据类型无需我们管理,内存管理的范围是对象,iOS内存管理采用了引用计数器的方式来管理内存...

  • 深浅拷贝

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

网友评论

      本文标题:IOS 内存斗争小史之 对象、指针、内存的基本理解

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