一,NSObject類提供了一個autorelease方法:
-(id)autorelease;
該方法預先設定了一條將來在某個時間發送的release消息,其返回值是接收消息的對象。retain消息采用了相同的技術,使嵌套調用更加容易。當給一個對象發送autorelease消息時,實際上是將該對象添加到NSAutoreleasePool中。當自動釋放池被銷毀時,會向該池中所有對象發送release消息。
二,
NSAutoreleasePool *pool;
pool=[[NSAutoreleasePool alloc]init];
...
[pool release];
創建一個自動釋放池時,該池自動成為活動的池。釋放該池時,其保留計數器值歸0,然后,該池被銷毀。在銷毀過程中,該池釋放其包含的所有對象。
當使用AppKit時,Cocoa定期自動為你創建和銷毀自動釋放池。通常是在程序處理完當前事件(如鼠標點擊或按鍵)以后執行這些操作。你可以使用做任意多的自動釋放對象,當不再使用它們時,自動釋放池將自動為你清理這些對象。
三,你可能已經在Xcode的自動生成代碼中遇見過另一種銷毀自動釋放池中對象的方式:-drain方法。該方法只是清空自動釋放池而不銷毀它。-drain方法只適用于MAC OS X 10.4及更高版本。在我們自己編寫(而不是由Xcode生成)的代碼中,我們使用-release方法,因為該方法適用于Mac OS的所有版本。
參考資料:《Object-C基礎教程》
新聞熱點
疑難解答