1. 程式人生 > >自動釋放池——autoreleasepool

自動釋放池——autoreleasepool

當您向一個物件傳送一個autorelease訊息 時,cocoa就會將該物件的一個引用放入到最新的自動釋放池,它仍然是個正當的物件,因此自動釋放池定義的作用域內的其他物件可以向它傳送訊息,當程式執行到作用域結束的位置時,自動釋放池就會釋放,池中的所有的物件也就被釋放

1、objective-c是通過一種“referring counting”(引用計數)的方式來管理記憶體的,物件在開始分配記憶體時(alloc)引用計數為1,以後每當碰到有copyretain的時候引用計數都會加1,每當碰到release和aurorelease時引用計數就會減一,如果此物件的計數變為了0,就會被系統銷燬

2、NSAutoreleasePool就是用來做引用計數的管理工作的,這個一般不用管。

3、autorelease和release沒什麼區別,只是引用計數減一的時機不同而已,autorelease會在物件的使用真正結束的時候才做引用計數減一。

引用計數: