enumerateObjectsUsingBlock:
Últimamente he estado usando mucho para mis necesidades de enumeración rápida y me cuesta entender el uso de BOOL *stop
en el bloque de enumeración.
Los NSArray
estados de referencia de clase
stop
: Una referencia a un valor booleano. El bloque puede establecer el valor enYES
para detener el procesamiento posterior de la matriz. Elstop
argumento es un argumento exclusivo. Solo debe establecer este booleanoYES
dentro del bloque.
Entonces, por supuesto, puedo agregar lo siguiente en mi bloque para detener la enumeración:
if (idx == [myArray indexOfObject:[myArray lastObject]]) {
*stop = YES;
}
Por lo que he sido capaz de decir, no explícitamente el establecimiento *stop
a YES
no tiene ningún efecto secundario negativo. La enumeración parece detenerse automáticamente al final de la matriz. Entonces, ¿es *stop
realmente necesario usar en un bloque?
stop
bandera es un aviso; la enumeración puede continuar durante un número indefinido de iteraciones en el caso concurrente, por ejemplo. Es decir, no debe establecer una__block
variable incondicionalmente en cada pasada a través de la enumeración y esperar que sea el "último" valor cuando se usastop
para terminar antes. Siempre debe acoplar "no, use este objeto" con la configuraciónstop = YES;
.