Avatar ·

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