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 *stop
im Aufzählungsblock zu verstehen .
Die NSArray
Klassenreferenzzustände
stop
: Ein Verweis auf einen Booleschen Wert. Der Block kann den Wert auf setzenYES
, um die weitere Verarbeitung des Arrays zu stoppen. Dasstop
Argument ist ein reines Argument. Sie sollten diesen Booleschen Wert immer nurYES
innerhalb 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 *stop
auf YES
keine negativen Nebenwirkungen hat. Die Aufzählung scheint sich am Ende des Arrays automatisch zu stoppen. Ist die Verwendung *stop
in einem Block also wirklich notwendig?
stop
Flagge 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__block
Variable nicht unbedingt bei jedem Durchlauf durch die Aufzählung festlegen und erwarten, dass sie der "letzte" Wert ist, wenn Sie siestop
zum vorzeitigen Beenden verwenden. Sie sollten immer das "Nein, benutze dieses Objekt" mit der Einstellung koppelnstop = YES;
.