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 ?
No answers yet.
Connectez-vous pour laisser une réponse
Blogs
API GraphQL avec PHP : tutoriel pas à pas pour débutants