Tenho usado enumerateObjectsUsingBlock:muito ultimamente para minhas necessidades de enumeração rápida e estou tendo dificuldade em entender o uso de BOOL *stopno bloco de enumeração.
Os NSArrayestados de referência da classe
stop: Uma referência a um valor booleano. O bloco pode definir o valorYESpara interromper o processamento adicional da matriz. Ostopargumento é um argumento exclusivo. Você só deve definir esse booleano comoYESdentro do bloco.
Então, é claro, posso adicionar o seguinte em meu bloco para interromper a enumeração:
if (idx == [myArray indexOfObject:[myArray lastObject]]) {
*stop = YES;
}
Pelo que pude perceber, não definir explicitamente *stopcomo YESnão tem efeitos colaterais negativos. A enumeração parece parar automaticamente no final da matriz. Então, usar é *stoprealmente necessário em um bloco?
stopsinalizador é consultivo; a enumeração pode continuar por algum número indefinido de iterações no caso simultâneo, por exemplo. Ou seja, você não deve definir uma__blockvariável incondicionalmente em cada passagem pela enumeração e esperar que seja o "último" valor ao usarstoppara encerrar antecipadamente. Você deve sempre acoplar o "não, use este objeto" com a configuraçãostop = YES;.