說我有一類DoStuff,那類有兩個方法,像這樣的Objective-C:自動釋放混亂
- (NSMutableDictionary* returnToCaller) methodOne : (NSString*) myString {
NSMutableDictionary* bundleOfJoy = [[NSMutableDictionary alloc] init];
if (myString) {
bundleOfJoy = [self methodTwo];
}
return bundleOfJoy;
}
- (NSMutableDictionary* returnToMethodOne) methodTwo {
NSMutableDictionary* anotherDictionary = [[NSMutableDictionary alloc] init];
[anotherDictionary setObject: @"hardcodedstring" forKey: @"theKey"];
return anotherDictionary;
}
好了,我承擔我的內存管理-FU是一種弱。我無法釋放在返回後手動創建的兩個字典,因爲釋放命令不會被調用。在退貨之前我無法做到或者我沒有任何價值。我的理解然後就是處理這是一個自動釋放池的方式......
pool = [[NSAutoreleasePool alloc] init];
和init我的對象這樣
NSMutableDictionary* anotherDictionary = [[[NSMutableDictionary alloc] init] autorelease];
,然後調用
[pool drain];
所以,如果這是正確的,我在哪裏啓動池?在awakeFromNib中?我在哪裏打電話[pool drain]?
,如果這是不正確可能有人理順我出去(但請慢慢鍵入):d
感謝
感謝所有的答覆。每個人都有很多東西。 – PruitIgoe 2012-01-06 18:17:11