我非常需要帮助,在我的iPhone应用程序中发生内存泄漏。该应用程序已准备好提交到应用程序商店,是稳定的,在iPhone模拟器或叮当中根本没有任何内存泄漏......但似乎与我的iPod Touch上的它们充满了矛盾。核心数据内存泄漏 - iPhone iOS4
当我尝试从Core Data中检索数据时,它们都来自managedObjectModel。
我的应用程序中的核心数据代码是由Xcode自动创建的,我注意到代码已经改变,当你得到xcode来生成它...我尝试过新旧但是没什么区别。
如果我注释掉下面的代码,问题就会消失......无论如何可以看到它有什么问题吗?到目前为止,我已经花了9个小时,只是想不出来!
NSString *entityForName = [[NSString alloc] initWithString:@"OfflineSettings"];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityForName inManagedObjectContext:[self managedObjectContext]];
[request setEntity:entity];
[entityForName release];
NSSortDescriptor *sortById = [[NSSortDescriptor alloc] initWithKey:@"Id" ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:sortById]];
[sortById release];
NSError *error;
NSMutableArray *mutableFetchResults = [[[self managedObjectContext] executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil) {
// Handle the error.
NSLog(@"Error fetching");
}
int intId = -1;
if ([mutableFetchResults count] == 0) {
TTDERROR(@"No id has been saved to offline settings");
} else {
OfflineSettings *offlineSettings = (OfflineSettings *)[mutableFetchResults objectAtIndex:0];
intId = [offlineSettings.Id intValue];
}
[mutableFetchResults release];
[request release];
泄漏具体似乎是在这条线:
NSMutableArray *mutableFetchResults = [[[self managedObjectContext] executeFetchRequest:request error:&error] mutableCopy];
..和[自managedObjectContext]的代码是如在情况下,它可以帮助如下..
- (NSManagedObjectContext *)managedObjectContext {
if (managedObjectContext_ != nil) {
return managedObjectContext_;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
managedObjectContext_ = [[NSManagedObjectContext alloc] init];
[managedObjectContext_ setPersistentStoreCoordinator:coordinator];
}
return managedObjectContext_;
}
我真的很茫然,所以我会很感激一些帮助!
Steven
我不明白这条线是如何特别引起泄漏的,但你为什么做一个可变的副本?您根本不需要修改数组,只需访问它,然后释放它。另外,你如何检测iPod上的泄漏,但不是在模拟器中? – bobDevil 2010-07-14 16:59:19
嘿, mutableCopy在我最初从它复制的示例代码中。我已经尝试过,并且摆脱了随附的版本,但它没有帮助。 我使用仪器检测iPod上的泄漏。 谢谢, – 2010-07-14 17:13:13