2011-07-13 7 views
5

Para la mayoría de los bloques de iteración, las firmas se definen especie de:¿Por qué la mayoría de los argumentos de uso de bloques para iteración continúan marcando en lugar de devolver valor?

void(^)(id obj, BOOL* stop) 

Se ve mejor utilizando valor de retorno para detener bandera.

BOOL(^)(id obj) 

Sin embargo, creo que hay un fuerte motivo por el que deciden usar el formulario actual en lugar de la forma más breve y conveniente. ¿Por qué usan el argumento para detener la bandera?

Respuesta

4

Claro, que funcionaría bien de cualquier manera, pero creo que de esta manera: usted tiene que utilizar la instrucción continue al final de su bucle for o while? No, por supuesto, no porque ocurra automáticamente. Sin embargo, si desea detener el bucle, puede usar break.

De forma similar con los métodos de enumeración basados ​​en bloques. No es necesario que devuelva YES para especificar si desea continuar la enumeración o no porque va a suceder automáticamente. Sin embargo, si desea dejar de enumerar, simplemente puede configurar *stop en YES.

Cuestiones relacionadas