2011-05-17 70 views
0

我剛剛通過儀器完成了我的應用程序的運行,並且我正在泄漏_NSCFDictionaries失去控制。我沒有爲workoutArray設置@property,因爲它是一個私有實例變量。內存泄漏initWithContentsOfFile

NSString *Path = [[NSBundle mainBundle] bundlePath]; 
NSString *DataPath = [Path stringByAppendingPathComponent:@"data.plist"]; 
NSArray *rawDump = [[NSArray alloc] initWithContentsOfFile:DataPath]; 
workoutArray = [[NSMutableArray alloc] init]; 

for (NSDictionary *dict in rawDump){ 
    [workoutArray addObject: dict]; 
} 

[rawDump release]; 

我釋放workoutArray在-dealloc

- (void)dealloc { 
[workoutArray release]; 
[managedObjectContext release]; 
[df release]; 
[super dealloc]; 

}

任何幫助深表感謝。

+0

這是在一個線程?你可能需要一個NSAutoreleasePool。 – 2011-05-17 21:24:17

+0

是多次調用該代碼嗎? – Eiko 2011-05-17 21:28:17

+0

你確定你沒有運行兩次(或更多)的方法嗎? – Roman 2011-05-17 21:28:56

回答

3

如您所示,您不止一次(在同一個實例中)運行此問題,則問題在於您重新分配workoutArray而不釋放舊對象。你需要重新分配之前release舊的對象:

[workoutArray release]; 
workout Array = [[NSMutableArray alloc] init]; // etc. 

作爲workoutArray爲伊娃是零默認情況下,在第一時間,這應該始終正常工作。

+0

偉大的感謝!我需要刷我的記憶管理:) – iOSDevSF 2011-05-17 21:38:07