Jak uniknąć wyczerpania pamięci podczas wykonywania zadania na każdym elemencie danych podstawowych?
Próbuję wykonać zadanie podobne do tego:
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++;
}
Ale kończy się pamięć, zanim przejdzie przez każdy wynik.
Jestem tego świadomy:
[request setFetchBatchSize:20];
Ale zastanawiam się, jak to działa z tym, co mam? Czy zatrzyma przetwarzanie po 20 wynikach, czy po prostu zdobędzie pierwszych 20 wyników, a następnie jakoś złapie następne 20 i będzie kontynuować?
Zasadniczo pytam, w jaki sposób mogę pobrać tylko pewną ilość danych, aby nie zabrakło im pamięci, a następnie pobrać kolejną partię?