Я занимаюсь разработкой приложения, которое требует загрузки более 1 миллиона записей посредством бесконечной прокрутки в виде таблицы.Каждый раз будет отправляться запрос на 1000 записей, и после загрузки и анализа данных через библиотеку JSON таблица перезагружается.Я реализовал это через CoreData с "setFetchBatchSize = 1000".
StreamModal *modal = [[StreamModal alloc]init];
StreamModal *modal = [NSEntityDescription insertNewObjectForEntityForName:@"StreamModal" inManagedObjectContext:managedObjectContext];
if([self isNotNull:[streamDataDict objectForKey:@"_id"]])
modal.stream_id = [streamDataDict objectForKey:@"_id"];
-(void)reloaData{
@try {
NSError *error;
if (![[self fetchedResultsController] performFetch:&error]) {
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
NSLog(@"ferchresults count %d",[[_fetchedResultsController fetchedObjects]count]);
}
@catch (NSException *exception) {
NSLog(@"exception raised in reloadData in streamViewController class %@",exception);
}
@finally {
}
}
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"StreamModal" inManagedObjectContext:appDelegate.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:1000];
//[fetchRequest setFetchLimit:2000];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:appDelegate.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
fetchRequest = nil;
theFetchedResultsController = nil;
return _fetchedResultsController;
}
Вот код, который я использую, когда, когда соединение завершается, я загружаю данные в класс NSManagedObject (StreamModal), а затем вызываю данные перезагрузки. Вот проблема в том, что приложение получает исключения памяти после того, как язагрузил 12000 записей в таблицу и потерпел крах.Как я могу загрузить все записи без исключения памяти.Я новичок в концепции CoreData и прочитал основные концепции данных через руководство разработчика, но я не нашел никакой информации, связанной с обработкой памяти.Пожалуйста, помогите мне.