Sobes.tech
Junior — Middle

Quelle est la différence entre la méthode de transmission de données utilisant une fermeture (Closure) et celle utilisant un délégué (Delegate) ?

sobes.tech IA

Réponse de l'IA

Le bloc fermé (Closure) et le délégué (Delegate) sont des mécanismes différents de transmission et de traitement des données/logique.

  • Closure — c'est une fonction qui capture et conserve le contexte (variables) de la portée environnante. Elle permet de transmettre la logique avec l'état.

  • Delegate — c'est un modèle dans lequel un objet transfère la responsabilité à un autre via une interface ou un protocole prédéfini. Sur iOS, les délégués sont généralement implémentés via des protocoles et permettent à un objet d'informer un autre d'événements.

Différences :

  • Closure — c'est une fonction avec une fermeture, plus flexible et compacte, souvent utilisée pour les rappels.
  • Delegate — c'est un objet avec une interface définie qui implémente des méthodes, assurant une interaction plus structurée.

Exemple de closure en Swift :

let closure = { (value: Int) in
    print("La valeur est \(value)")
}
closure(10)

Exemple de délégué :

protocol MyDelegate: AnyObject {
    func didUpdate(value: Int)
}

class Worker {
    weak var delegate: MyDelegate?
    func doWork() {
        // ...
        delegate?.didUpdate(value: 42)
    }
}