Мне очень нужна помощь с утечкой памяти в приложении для iPhone. Приложение готово к отправке в магазин приложений, стабильно, не имеет утечек памяти вообще в iPhone-симуляторе или Clang ... но кажется пронизанным ими на моем iPod Touch.Core Data Memory Leak - iPhone iOS4
Все они, похоже, связаны с managedObjectModel, когда я пытаюсь получить данные из 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];
.. и код для [само] 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
Привет, Мутируемый Копи был в образце кода, из которого я первоначально скопировал это. Я пробовал это без и избавляюсь от сопровождающего релиза, но это не помогает. Я обнаруживаю утечки на iPod с помощью инструментов. Спасибо, –