Sobes.tech
Junior — Middle

Quelle est la différence entre l'annotation @Escaping et les fonctions standard dans un langage de programmation?

sobes.tech IA

Réponse de l'IA

L’annotation @escaping en Swift (langage iOS) est utilisée pour indiquer qu’une fermeture (closure) peut être appelée après la sortie de la fonction dans laquelle elle a été transmise.

Par défaut, les fermetures en Swift sont considérées comme non-escaping, c’est-à-dire qu’elles doivent être appelées à l’intérieur du corps de la fonction. Si la fermeture est stockée, par exemple, dans une propriété ou appelée de manière asynchrone plus tard, elle doit être marquée comme @escaping.

Ceci est important pour la gestion de la mémoire et pour éviter les fuites, car les fermetures @escaping peuvent capturer self et nécessitent l’utilisation explicite de self. à l’intérieur.

Exemple:

func performAsyncTask(completion: @escaping () -> Void) {
    DispatchQueue.global().async {
        // Travail asynchrone
        completion() // appel après la sortie de la fonction
    }
}

Ainsi, @escaping diffère des fermetures standard (non-escaping) en permettant à la fermeture de vivre plus longtemps que l’exécution de la fonction et d’être appelée plus tard.