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ę?

questionAnswers(2)

yourAnswerToTheQuestion