我的問題是什麼時候一個對象被實際添加到autorelease池? 創建自動釋放池並在該範圍內聲明對象時,是將它們添加到自動釋放池中,還是將它們指定爲自動釋放時添加到池中。在Objective-C中如何處理Autorelease池中的對象?
int main(void) {
NSAutoreleasePool *pool;
pool = [[NSAutoreleasePool alloc] init];
NSString *string;
NSArray * array;
string = [[[NSString alloc] init] autorelease];
array = [[NSArray alloc] init];
/* use the string */
[pool drain];
}
在這種情況下只有字符串被添加到池中,或者甚至數組被添加到池中?
感謝您的回覆Jared ..我也有另一個疑問是當我創建嵌套池時,我可以使用嵌套池中的對象作爲autorelease,其中對象在父池中創建。 – Cathy 2010-07-08 08:00:32
@Cathy:是的,你可以,但這可能會混淆內存管理 - 正如文檔所說,不要釋放你沒有創建或保留的東西。基本上我不能想到這樣一種情況,即你可以乾淨利落地完成這項工作,儘管它在技術上絕對好,只要你不過度釋放它(通過自動釋放兩次) – 2010-07-08 19:58:34