Home » Trucos » Truco de Swift: Enviar bloques (Closures) como parámetros a Objective-C
Trucos de Swift

Truco de Swift: Enviar bloques (Closures) como parámetros a Objective-C

Una de las principales ventajas de Swift es su posibilidad de interactuar con Cocoa y Objective-C, aunque debido a la estructura de cada lenguaje hay que tener cuidado de cómo hacemos llamadas entre uno y otro lenguaje.

Closures, bloques en Swift

Un bloque es un trozo de código que actúa como si fuera una variable, o según podamos entender, una variable o constante calculada. En vez de tener un valor fijo (a = 23, st = “Hola”) incluye una función que ejecuta una serie de líneas de código y que pueda devolver un valor final tras su ejecución.

Vamos a suponer que tenemos el siguiente código en Swift para crear un bloque de llamada:

Lo que tenemos es una variable BlockS de tipo cadena (String) que ejecutará una función que ya tenemos creada en otra parte del código (Construir_Cadena_Fecha) que devolverá una cadena con el día y la hora de ese momento.

Si os fijáis, las cadenas no están inferidas, sino que son implícitas y con una ! al final. Esto indica que son variables de tipo opcional para que puedan transferirse como tipos válidos al código de Objective-C.

Es lo que se llama: variables opcionales implícitas desenlazadas o implicity unwrapped optionals. Es muy importante tener esto en cuenta, pues si no definimos el tipo opcional en el bloque, tanto en la variable que contendrá el propio bloque como en el posible parámetro del mismo, el compilador dará error porque en caso que dicho bloque no devolvería resultado, Swift no sabría cómo tratarlo.

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

Crear errores en Swift con más información

Truco: crear errores en Swift con más información

Vemos un fácil truco para usar el protocolo Error más ayuda de enumeraciones y obtener con ello la posibilidad de conseguir errores con más información. Un tutorial para aquellos que trabajan en el día a día con Swift pero quieren sacar algo más del lenguaje, en este caso con la gestión de errores.