當你向一個對象發(fā)送一個autorelease消息時,Cocoa就會將該對象的一個引用放入到最新的自動釋放池。它仍然是個正常的對象钓葫,因此自動釋放池定義的作用域內的其它對象可以向它發(fā)送消息。當程序執(zhí)行到作用域結束的位置時湾揽,自動釋放池就會被釋放瓤逼,池中的所有對象也就被釋放。
OC是通過 referring counting 库物,引用計數(shù)霸旗,的方式來管理內存的。
對象開始分配內存戚揭,調用 alloc 方法诱告,retainCount = 1;每次 copy 民晒, retain 精居, retainCount + 1锄禽;每次 release , autorelease 靴姿, retainCount - 1沃但;當 retainCount = 0,系統(tǒng)就會調用 dealloc 方法佛吓,銷毀對象宵晚。NSAutoreleasePool 就是用來做引用計數(shù)的管理工作的,這個東西一般不用管维雇。
autorelease 和 release 沒什么區(qū)別淤刃,只是 retainCount - 1的時機不同而已,autorelease 會在對象的使用真正結束的時候才將retainCount - 1吱型。
如有不當逸贾、錯誤之處,歡迎指正津滞!