Objective-C對象的生命周期取決于其引用計數(shù)向胡。
釋放對象有兩種方式:一種是調(diào)用release方法琐旁,使其保留計數(shù)立即遞減倍靡;另一種是調(diào)用autorelease方法碉京,將其加入“自動釋放池中”厢汹。自動釋放池用于存放哪些需要在稍后某個時刻釋放的對象。清空自動釋放池谐宙,系統(tǒng)會向其中的對象發(fā)送release消息烫葬。
一般情況下,無需擔(dān)心自動釋放池的創(chuàng)建問題凡蜻。iOS應(yīng)用程序運(yùn)行在Cocoa Touch環(huán)境中搭综。系統(tǒng)會自動創(chuàng)建一些線程,比如說主線程或GCD機(jī)制中的線程划栓,這些線程默認(rèn)都有自動釋放池兑巾,每次執(zhí)行“事件循環(huán)(event loop)”,就會將其清空。因此忠荞,不需要自己創(chuàng)建“自動釋放池塊”蒋歌。通常只有一個地方需要創(chuàng)建自動釋放池,那就是在main函數(shù)里委煤。
@autoreleasepool語法還有個好處:每個自動釋放池都有其范圍堂油,可以避免無意間誤用了那些在清空池后已為系統(tǒng)所回收的對象。