如何在纯Swift中创建对协议的弱引用(不使用@objc)
大家好!我正在学习Swift,并尝试实现委托模式,但遇到了内存泄漏的问题。我有一个协议:
```swift
protocol MyDelegate: class {
func didSomething()
}
class MyClass {
var delegate: MyDelegate?
func doSomething() {
delegate?.didSomething()
}
}
```
我知道在Objective-C中,可以对标记为`@objc`的协议使用`weak`。但我想用纯Swift编写。当我尝试这样做:
```swift
weak var delegate: MyDelegate?
```
编译器报错:`'weak' may only be applied to class and class-bound protocol types`。我了解到需要让协议继承自`AnyObject`或在协议定义中使用`class`。但我不完全理解它的工作原理以及两者之间的区别。
我的主要问题是:如何正确声明协议,以便可以对委托属性使用`weak`,同时避免retain cycle?我希望委托可以是任何类型(类