Мне отчаянно нужна помощь с утечкой памяти в приложении для iPhone. Приложение готово к отправке в магазин приложений, оно стабильно, вообще не имеет утечек памяти в симуляторе iPhone или Clang ... но, кажется, изобилует ими на моем iPod Touch.
Кажется, что все они происходят из managedObjectModel, когда я пытаюсь получить данные из Core Data.
Код Core Data в моем приложении был автоматически создан 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];
.. и код для [selfagedObjectContext] выглядит следующим образом на случай, если это поможет ..
- (NSManagedObjectContext *)managedObjectContext {
if (managedObjectContext_ != nil) {
return managedObjectContext_;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
managedObjectContext_ = [[NSManagedObjectContext alloc] init];
[managedObjectContext_ setPersistentStoreCoordinator:coordinator];
}
return managedObjectContext_;
}
Я действительно в растерянности, поэтому я был бы очень признателен за помощь!
Стивен