2010-09-16 11 views

Respuesta

4

, para la parte más grande. Los bloques son clase-de funciones C tratadas clase-de objetos similares que pueden capturar variables del ámbito circundante. Las funciones anónimas son equivalentes a bloques, pero ciertamente no idénticas debido a la complicada maquinaria de bloques detrás de la escena.

Por ejemplo, si planea usar un bloque después/fuera, la función/método que define el bloque ya no está activo; es el caso si configura el bloque como una propiedad en algún lugar o se usa en GCD (un -core biblioteca de cola de operaciones), debe copiarlo con Block_copy() (o [aBlock copy]). No entraré en detalles, pero ciertamente no es algo que se haga con las funciones JS (anónimas). Tiene que ver con el hecho de que los literales del bloque literales están asignados en la pila (y no en algún lugar del código) y debe copiarlo en el montón si desea que persista.

Puede ser bastante complicado (pero bastante bonito en su diseño), pero para la mayoría de los casos de uso es bastante fácil y puede tratarlo como funciones anónimas de JS. ;-)

3

Sí. Los bloques en Objective-C son cierres.

Cuestiones relacionadas