Eu tenho usado enumerateObjectsUsingBlock: muito ultimamente para minhas necessidades de enumeração rápida, e eu estou tendo dificuldade em entender o uso de BOOL *stop no bloco de enumeração.
stop : uma referência a um valor booleano. O bloco pode definir o valor como YES para interromper o processamento adicional do array. O argumento stop é um argumento somente externo. Você só deve definir este booleano para YES dentro do bloco.
Pelo que pude dizer, não definir explicitamente *stop para YES não tem nenhum efeito colateral negativo. A enumeração parece parar automaticamente no final da matriz. Então está usando *stop realmente necessário em um bloco?
O argumento de stop para o bloco permite que você pare a enumeração prematuramente . É o equivalente a break de um loop for normal. Você pode ignorá-lo se quiser passar por todos os objects da matriz.
Esse é um parâmetro out porque é uma referência a uma variável do escopo de chamada. Ele precisa ser definido dentro do seu bloco, mas lido dentro de enumerateObjectsUsingBlock: NSError da mesma forma que os NSError do NSError são normalmente passados ​​de volta para o seu código a partir de chamadas do framework.