首页 > 代码库 > IOS 内存斗争小史之 对象、指针、内存的基本理解

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

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

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

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

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

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