Avatar ·

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

Bonjour à tous ! J'apprends Swift et j'essaie d'implémenter le pattern délégué, mais je rencontre un problème de fuite mémoire. J'ai un protocole : ```swift protocol MyDelegate: class { func didSomething() } class MyClass { var delegate: MyDelegate? func doSomething() { delegate?.didSomething() } } ``` Je sais qu'en Objective-C, on pouvait utiliser `weak` pour les protocoles marqués avec `@objc`. Mais je veux écrire en Swift pur. Quand j'essaie de faire : ```swift weak var delegate: MyDelegate? ``` Le compilateur donne une erreur : `'weak' may only be applied to class and class-bound protocol types`. J'ai lu qu'il faut hériter le protocole de `AnyObject` ou utiliser `class` dans la définition du protocole. Mais je ne comprends pas complètement comment cela fonctionne et quelle est la différence. Ma question principale : comment déclarer correctement un protocole pour pouvoir utiliser `weak` sur la propriété déléguée, tout en évitant un retain cycle ? Je veux que le délégué puisse être n'importe quel type (class