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