码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2014-04-30 15:43:38      阅读:606      评论:0      收藏:0      [点我收藏+]

标签:c   re   ios   使用   ase   os   release   dea   nil   块对象   野指针   

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

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

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

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

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

IOS 内存斗争小史之 对象、指针、内存的基本理解,码迷,mamicode.com

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

标签:c   re   ios   使用   ase   os   release   dea   nil   块对象   野指针   

原文地址:http://www.cnblogs.com/ygm900/p/3699530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!