Estoy tratando de entender el concepto de bloques. Lo que he leído hasta ahora parece ser conceptualmente similar a las funciones anónimas en JavaScript. ¿Es esto correcto?¿Los bloques Objective-C son similares a las funciones anónimas en JavaScript?
Respuesta
Sí, 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. ;-)
Sí. Los bloques en Objective-C son cierres.
- 1. ¿Debo encapsular bloques de funcionalidad en funciones JavaScript anónimas?
- 2. ¿Las funciones anónimas son una mala práctica en JavaScript?
- 3. ¿Qué son exactamente las funciones anónimas?
- 4. ¿Cómo se transmiten los datos a funciones anónimas en JavaScript?
- 5. Cuando los bloques son más útiles que las funciones (ruby)?
- 6. Bloques ObjectiveC equivalente en Java
- 7. python: alternativa a las funciones anónimas
- 8. ¿Se permiten las funciones anónimas?
- 9. Paréntesis para funciones de JavaScript anónimas
- 10. variables globales JavaScript y funciones anónimas autoinvocadas
- 11. ¿Cómo puedo pasar argumentos a funciones anónimas en JavaScript?
- 12. ¿Qué tan caras son las llamadas a funciones en JavaScript?
- 13. Javascript 'dos puntos' para etiquetar funciones anónimas?
- 14. JavaScript: modo estricto y funciones anónimas
- 15. funciones anónimas consideradas nocivas?
- 16. ejecutando funciones anónimas creadas usando JavaScript eval()
- 17. Las funciones de JavaScript son objetos?
- 18. En zsh, ¿cómo paso las matrices anónimas en las funciones?
- 19. Prueba de funciones de JavaScript dentro de funciones anónimas
- 20. Funciones anónimas vs no anónimas Lua
- 21. Tcl Funciones anónimas
- 22. ¿Las funciones nombradas están infravaloradas en JavaScript?
- 23. funciones anónimas falsas en C
- 24. Creación de funciones anónimas en bucle sin los mismos argumentos
- 25. Devolver funciones anónimas
- 26. ¿VB.NET tiene funciones anónimas?
- 27. variables php en funciones anónimas
- 28. detalles de cierres en JavaScript y funciones anónimas
- 29. Funciones PHP recursivas anónimas
- 30. Cómo son inseguros los punteros a las funciones