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)
}
}