Ich habe in enumerateObjectsUsingBlock:letzter Zeit viel für meine Anforderungen an die schnelle Aufzählung verwendet, und es fällt mir schwer, die Verwendung BOOL *stopim Aufzählungsblock zu verstehen .
Die NSArrayKlassenreferenzzustände
stop: Ein Verweis auf einen Booleschen Wert. Der Block kann den Wert auf setzenYES, um die weitere Verarbeitung des Arrays zu stoppen. DasstopArgument ist ein reines Argument. Sie sollten diesen Booleschen Wert immer nurYESinnerhalb des Blocks festlegen .
Dann kann ich natürlich Folgendes in meinen Block einfügen, um die Aufzählung zu stoppen:
if (idx == [myArray indexOfObject:[myArray lastObject]]) {
*stop = YES;
}
Von dem, was ich habe Einstellung sagen kann, nicht explizit *stopauf YESkeine negativen Nebenwirkungen hat. Die Aufzählung scheint sich am Ende des Arrays automatisch zu stoppen. Ist die Verwendung *stopin einem Block also wirklich notwendig?
stopFlagge eine Empfehlung ist. Die Aufzählung kann beispielsweise für eine undefinierte Anzahl von Iterationen im gleichzeitigen Fall fortgesetzt werden. Das heißt, Sie sollten eine__blockVariable nicht unbedingt bei jedem Durchlauf durch die Aufzählung festlegen und erwarten, dass sie der "letzte" Wert ist, wenn Sie siestopzum vorzeitigen Beenden verwenden. Sie sollten immer das "Nein, benutze dieses Objekt" mit der Einstellung koppelnstop = YES;.