Как избежать нехватки памяти при выполнении задачи для каждого элемента основных данных?
Я пытаюсь выполнить задачу, подобную этой:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Entry"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(version == %@)", @"1.0"];
[request setPredicate:predicate];
NSArray *results = [[AppDelegate applicationDelegate].managedObjectContext executeFetchRequest:request error:nil];
int i = 0;
while (i < results.count) {
Entry *entry = [results objectAtIndex:i];
entry.version = @"1.1";
i++;
}
Но он исчерпал память, прежде чем он прошел через каждый результат.
Мне известно об этом:
[request setFetchBatchSize:20];
Но мне интересно, как это будет работать с тем, что у меня есть? Остановит ли он обработку после 20 результатов, или он просто захватит первые 20 результатов, а затем каким-то образом захватит следующие 20 и продолжит?
По сути, я спрашиваю, как мне получить только определенный объем данных, чтобы остановить его нехватку памяти, а затем получить другой пакет?