Sobes.tech
Junior — Middle

Dans quels cas faut-il utiliser l'annotation @escaping pour les closures en Swift?

sobes.tech IA

Réponse de l'IA

En Swift, l'annotation @escaping s'applique aux fermetures (closures) qui peuvent être appelées après la fin de la fonction dans laquelle elles ont été passées. Cela se produit si la fermeture est conservée pour une utilisation ultérieure, par exemple dans des opérations asynchrones ou en la stockant dans des propriétés.

Exemple d'une situation où il faut utiliser @escaping:

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

Si la fermeture est appelée à l'intérieur de la fonction avant sa fin, @escaping n'est pas nécessaire. Mais si la fermeture est conservée ou appelée plus tard, le compilateur exige @escaping.

Cela concerne la gestion de la durée de vie de la fermeture et la prévention des erreurs de mémoire.