weak引用似乎在 Swift 中不起作用,除非 aprotocol被声明为@objc,这是我在纯 Swift 应用程序中不想要的。
weak
protocol
@objc
此代码给出编译错误(weak不能应用于非类类型MyClassDelegate):
MyClassDelegate
class MyClass { weak var delegate: MyClassDelegate? } protocol MyClassDelegate { }
我需要在协议前面加上@objc,然后它才能工作。
问题:完成 a 的“纯”Swift 方法是weak delegate什么?
delegate
您需要将协议的类型声明为AnyObject.
AnyObject
protocol ProtocolNameDelegate: AnyObject { // Protocol stuff goes here } class SomeClass { weak var delegate: ProtocolNameDelegate? }
使用AnyObject你说只有类可以符合这个协议,而结构或枚举不能。