我很难在代码中掌握这种内存泄漏。基本上它返回一个包含对象的对象。这里的下面的代码:返回对象上的内存泄漏
-(id) getOptions {
FileManager *file = [[FileManager alloc] initWithFileName:@"optionsFile.dat"];
Options *options = [[Options alloc] init];
NSMutableArray *fileArray = [[NSMutableArray alloc] init];
fileArray = [file loadFile: @"optionsFile"];
if ([fileArray count] > 0) {
options = [fileArray objectAtIndex:0];
}
[file release];
return options;
}
我尽量保留返回的对象和释放使用后右:
id options = [[self getOptions] retain];
[options release];
基本上,从iPhone的文件,我应该有它的自动释放我mutatbe阵列filearray上,但我仍然得到一个内存泄漏,任何人都可以摆脱这一点,将不胜感激。
编辑:
我只是说这个,看看它是否会解决任何问题,但我仍然漏水:
FileManager *file = [[FileManager alloc] initWithFileName:@"optionsFile.dat"];
NSMutableArray *fileArray = [file loadFile: @"optionsFile"];
Options *options = [fileArray objectAtIndex:0];
[file release];
return options;
你并不需要分配并初始化每个变量。当你这样做时,每个赋值给该变量都会覆盖你新分配的对象。 – dreamlax 2009-11-24 19:34:31