【发布时间】:2011-03-07 04:28:12
【问题描述】:
我一直在为这个内存泄漏而绞尽脑汁..
我的数据源是可变字典..我在 viewdidload 中加载。如果我不保留它。我无法在 cellforrowatindexpath 中访问它。但是当我保留它时..它显示为仪器中的内存泄漏。我尝试了很多不同的变化.. 似乎没有做对。
这是泄漏在“dict”和“plistPath”中的代码
` - (void)viewDidLoad { [超级viewDidLoad];
self.navigationController.navigationBarHidden = NO;
self.title = @"Messages & Lists";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
[plistPath release];
plistPath = [documentsDirectory stringByAppendingPathComponent:@"general.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];
[dict release];
if ( [fileManager fileExistsAtPath:plistPath] ) {
dict = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath] ;
} else {
dict = [NSMutableDictionary dictionaryWithCapacity:1];
[dict setObject:@"NO" forKey:@"busyStatus"];
[dict setObject:@"NO" forKey:@"replyToAll"];
[dict setObject:@"NO" forKey:@"replyToList"];
[dict setObject:@"NO" forKey:@"dontReplyToList"];
[dict writeToFile:plistPath atomically:YES];
}
[tableData release];
tableData = [[NSMutableDictionary alloc] init];
[tableData setObject:[NSArray arrayWithObjects:@"Help",@"Set Default Message",@"Reply To All",[dict objectForKey:@"replyToAll"],nil] forKey:@"1"];
[tableData setObject:[NSArray arrayWithObjects:@"Reply to a List",[dict objectForKey:@"replyToList"],@"List of Contacts",nil] forKey:@"2"];
[tableData setObject:[NSArray arrayWithObjects:@"Don't reply to List",[dict objectForKey:@"dontReplyToList"],@"List of Contacts",nil] forKey:@"3"];
[dict retain];
[plistPath retain];
}
`
第一次加载视图时没有泄漏。但如果我回来了。然后再次加载它泄漏的视图。
提前感谢任何可以帮助我的人。
【问题讨论】:
标签: iphone objective-c cocoa memory-leaks