理解引用计数--Effective笔记

Objective-C语言使用引用计数来管理内存,也就是说每个对象都有个可以递增或递减的计数器。

一个对象刚被创建出来 计数器 从0 -> 1 (new,alloc,copy : +1)
如果要让这个对象持续存活 就递增计数器 (retain:+1)
想让这个对象销毁 就递减计数器 -> 0 (release :-1)

除了这几个方法影响引用计数外,还有autoreleas 这个方法是延后递减计数,不会一调用就计数减一。

最终保留计数归零时,对象就回收了,也就是说系统会将其占用的内存标记为“可重用”。此时所有指向该对象的引用也变的无效了。
注意:当计数器降至0 ,对象会回收,但是可能不会立即回收,因为对象所占的内存在“解除分配”之后,只是放回“可用内存池”。如果在未覆写对象内存时去操作这个对象,该对象仍然会有效。所以我们使用对象释放方法后,会让变量指向nil,来防止这个难发现的问题。

你可能感兴趣的:(理解引用计数--Effective笔记)