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