AD

¿Ya dominas lo básico? Un curso estructurado de Objective-C es la vía rápida para dar el salto.

Ver cursos de Objective-C en Udemy

Enlace de afiliado. No te cuesta nada extra.

🍎Lecciones de Objective-C
Lección 29 / 68

Funciones de orden superior (pasar un bloque)

En esta lección pasarás un trozo de comportamiento como si fuera un dato.

Un bloque se escribe con un acento circunflejo: ^NSComparisonResult(NSNumber *a, NSNumber *b) { ... }. Es el equivalente a las funciones anónimas de otros lenguajes.

El código de ejemplo ordena unos números de mayor a menor invirtiendo el orden de la comparación.

Los bloques llegaron en 2009 y cambiaron cómo se escribe Objective-C: son la base de las animaciones, de las peticiones de red y de todo el código asíncrono en las API de Apple.

Tienen un peligro característico que hay que conocer: capturan las variables del entorno, incluido self. Si un objeto guarda un bloque que captura self, ambos se retienen mutuamente y ninguno se libera nunca — es la fuga de memoria más común del lenguaje. Se resuelve con el patrón __weak typeof(self) weakSelf = self; antes del bloque, que verás repetido en cualquier proyecto real.

La sintaxis de los tipos de bloque es célebre por ser difícil de leer. Existe una web dedicada solo a explicarla, y en la práctica se usa typedef para no repetirla.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Objective-C directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)