Я использую CoreData для хранения таких объектов, как автомобили, поездки, данные, записанные с GPS и т. Д.
Когда я получаю то, что я хочу, чтобы показать список поездок, некоторую статистику поездки или добавить новую машину в моем контроллере просмотра настроек, я использую в значительной степени такой запрос:
- (void)getDataTrip
{
// Fetched data trips.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"DataTrip" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
// Set predicate and sort orderings...
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timestamp" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idTrip = %@", self.idTrip];
[fetchRequest setPredicate:predicate];
// Execute the fetch -- create a mutable copy of the result.
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[self.managedObjectContext executeFetchRequest:fetchRequest error:&error] mutableCopy];
if (mutableFetchResults == nil) {
// Handle the error.
NSLog(@"failed with error: %@", error);
}
// Set the array.
[self setDataTripArray:mutableFetchResults];
// Memory management.
[fetchRequest release];
[mutableFetchResults release];
}
Иногда у меня возникают утечки, когда я делаю [self setDataTripArray:mutableFetchResults];
, а иногда нет. В этом случае, когда я получаю данные для поездки, она все время протекает, когда я использую контроллер навигации, чтобы вернуться к корневому контроллеру представления (отображая список поездок), и / или когда я меняю вкладку. *
В любом случае, он просто протекает, и все время идет от извлечения данных из CoreData и передачи этого массива в мой локальный массив var.
Пожалуйста, дайте мне знать, если вы видите, как это исправить! Через некоторое время приложение зависло.
Спасибо!