有谁能告诉我为什么这在Swift 3中不起作用? 我有一个符合AnyObject的协议:
protocol EventListenerProtocol: AnyObject {
func doSomething()
}
然后我有一个发射器协议,默认实现如下:
protocol EventEmitterProtocol {
associatedtype ListenerType
var listeners: [ListenerType] { get set }
func addEventListener(_ listener: ListenerType)
func removeEventListener(_ listener: ListenerType)
}
extension EventEmitterProtocol where ListenerType: AnyObject {
... funcs implemented ...
}
removeEventListener要求ListenerType为AnyObject才能使用标识运算符。
毕竟,我试图在课堂上使用它:
class myClass: EventEmitterProtocol {
var listeners: [EventListenerProtocol] = []
}
它说我的课程不符合EventEmitterProtocol。当我将EventListenerProtocol更改为AnyObject作为数组类型时,它会进行编译。 EventListenerProtocol符合AnyObject,那么为什么弹出错误?我真的很感激任何帮助:)