Sobes.tech
Junior — Middle

¿En qué se diferencia la anotación @Escaping de las funciones estándar en un lenguaje de programación?

sobes.tech AI

Respuesta de la IA

La anotación @escaping en Swift (lenguaje iOS) se usa para indicar que un cierre (closure) puede ser llamado después de que la función en la que se pasa haya finalizado.

Por defecto, los cierres en Swift se consideran no-escaping, es decir, deben ser llamados dentro del cuerpo de la función. Si el cierre se guarda, por ejemplo, en una propiedad o se llama de forma asíncrona más tarde, se debe marcar como @escaping.

Esto es importante para la gestión de memoria y para prevenir fugas, ya que los cierres @escaping pueden capturar self y requieren el uso explícito de self. dentro.

Ejemplo:

func performAsyncTask(completion: @escaping () -> Void) {
    DispatchQueue.global().async {
        // Trabajo asíncrono
        completion() // llamada después de salir de la función
    }
}

De esta forma, @escaping difiere de los cierres estándar (no-escaping) en que permite que el cierre viva más allá del tiempo de ejecución de la función y se llame más tarde.