Avatar ·

Comment créer une référence faible à un protocole en Swift pur (sans @objc)

Bonjour à tous ! Je suis débutant en Swift et j'ai rencontré un problème lors de l'implémentation du pattern délégué. J'ai un protocole `MyDelegate` et une classe `ViewController` qui doit être le délégué d'une autre classe `Service`. Je veux que la propriété `delegate` dans `Service` soit une référence faible (weak) pour éviter un cycle de références fortes et des fuites mémoire. Voici mon code : ```swift protocol MyDelegate { func didSomething() } class Service { weak var delegate: MyDelegate? // Erreur : 'weak' cannot be applied to non-class type 'MyDelegate' func performTask() { delegate?.didSomething() } } class ViewController: MyDelegate { func didSomething() { print("Travail terminé !") } } ``` Xcode affiche une erreur : `'weak' cannot be applied to non-class type 'MyDelegate'`. Je comprends que `weak` ne fonctionne qu'avec les types référence (classes), mais les protocoles peuvent être adoptés à la fois par des classes et des structures. Comment faire correctement une référence faible à un protocole ?