Como fazer uma referência fraca a um protocolo em Swift puro (sem @objc)
Olá a todos! Sou novo em Swift e encontrei um problema ao implementar o padrão delegate.
Tenho um protocolo `MyDelegate` e uma classe `ViewController` que deve ser o delegate de outra classe `Service`. Quero que a propriedade `delegate` em `Service` seja uma referência fraca (weak) para evitar um ciclo de referências fortes e vazamentos de memória.
Aqui está meu código:
```swift
protocol MyDelegate {
func didSomething()
}
class Service {
weak var delegate: MyDelegate? // Erro: 'weak' cannot be applied to non-class type 'MyDelegate'
func performTask() {
delegate?.didSomething()
}
}
class ViewController: MyDelegate {
func didSomething() {
print("Trabalho concluído!")
}
}
```
O Xcode mostra o erro: `'weak' cannot be applied to non-class type 'MyDelegate'`. Entendo que `weak` só funciona com tipos de referência (classes), mas protocolos podem ser adotados tanto por classes quanto por structs.
Como fazer corretamente uma referência fraca a um protocolo em Swift puro (sem @objc)?
No answers yet.
Faça login para deixar uma resposta
Blogs
10 melhores frameworks Kotlin para desenvolvimento web em 2024
Chaos Engineering para PHP: como quebrar a aplicação antes que os usuários o façam
Constantes em Kotlin: como criar corretamente? Guia completo
Testes E2E C#: guia para quem está cansado de bugs em produção