添加多个代理而不是仅添加一个委托是一项非常常见的任务.假设我们有协议和类:
protocol ObserverProtocol { ... } class BroadcasterClass { // Error: Type 'ObserverProtocol' does not conform to protocol 'AnyObject' private var _observers = NSHashTable.weakObjects() }
如果我们试图强制ObserverProtocol
遵守AnyObject
协议,我们将得到另一个错误:
不支持使用'ObserverProtocol'作为符合协议'AnyObject'的具体类型
甚至可以在Swift 3.0中创建一组弱委托吗?
当然,这是可能的.
AnyObject
是id
目标C中的Swift等价物.要编译代码,只需要@objc
在协议中添加注释,告诉Swift协议应该与Objective C兼容.
所以:
@objc protocol ObserverProtocol { }