В среде сборки мусора я создаю приложение, использующее Core Data и Sync Services. Базовая модель и хранилище данных - это представление контактной информации адресной книги (как описано в Apple здесь ).
Цель приложения - синхронизировать контакты в адресной книге через службы синхронизации с нашим онлайн-сервисом. Это означает синтаксический анализ изменений (добавлений, обновлений, удалений) в хранилище базовых данных, которые впоследствии будут получены службами синхронизации (и наоборот).
Однако, кажется, что когда я создаю объекты Core Data, они никогда не освобождаются. Код, который я использую, выглядит следующим образом (я сократил утечку до следующей инструкции):
SLSyncLog *syncLog = [SLSyncLog singletonFromContext:context];
+ (SLSyncLog *)singletonFromContext:(NSManagedObjectContext *)context {
NSEntityDescription *syncDataDescription = [SLSyncLog entityInManagedObjectContext:context];
return (SLSyncLog *)[SLSingletonLoader loadSingletonOfEntity:syncDataDescription fromContext:context];
}
+ (NSManagedObject *)loadSingletonOfEntity:(NSEntityDescription *)entity fromContext:(NSManagedObjectContext *)context {
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
NSError *error = nil;
NSArray *results = [context executeFetchRequest:request error:&error];
[request release];
if (error) {
[NSException raise:kSyncDataException format:@"Error retrieving %@ object", [entity name]];
}
if ([results count] > 1) {
[NSException raise:kSyncDataException
format: @"There were %d %@ objects, instead of the expected one.", [entity name], [results count]];
}
NSManagedObject *log = nil;
if ([results count] == 0) {
/* Create the singleton object. */
log = [NSEntityDescription insertNewObjectForEntityForName:[entity name]
inManagedObjectContext:context];
} else {
log = [results objectAtIndex:0];
}
return log;
}
Насколько я понимаю, находясь в среде с сборкой мусора, он должен очистить все, что создано в этих методах. Это специфическая проблема Core Data?
Любая помощь будет оценена. Спасибо!