weak
引用在 Swift 中似乎不起作用,除非将 protocol
声明为 @objc
,我不希望这样纯 Swift 应用。
此代码给出编译错误(weak
cannot be applied to non-class type MyClassDelegate
):
class MyClass {
weak var delegate: MyClassDelegate?
}
protocol MyClassDelegate {
}
我需要在协议(protocol)前加上@objc
,然后它就可以工作了。
问题:完成弱
delegate
的“纯”Swift 方法是什么?
最佳答案
您需要将协议(protocol)的类型声明为AnyObject
。
protocol ProtocolNameDelegate: AnyObject {
// Protocol stuff goes here
}
class SomeClass {
weak var delegate: ProtocolNameDelegate?
}
使用 AnyObject
你说只有类可以符合这个协议(protocol),而结构或枚举不能。
关于swift - 如何在 'pure' Swift 中创建一个弱协议(protocol)引用(没有@objc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24066304/