内存泄漏initWithContentsOfFile

时间:2011-05-17 21:16:53

标签: iphone objective-c cocoa-touch memory-leaks

我刚刚通过乐器运行我的应用程序,我正在泄漏_NSCFDictionaries失控。我没有为workoutArray设置@property,因为它是一个私有实例变量。

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];

我在-dealloc中释放workoutArray

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

}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

当您指示不止一次(在同一个实例上)运行时,问题是您在不释放旧对象的情况下重新分配workoutArray。在重新分配之前,您需要release旧对象:

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

作为ivar的workoutArray默认情况下是第一次为零,这应该始终正常。