Swift AnyObject协议一致性问题

时间:2017-02-21 14:13:54

标签: swift class swift-protocols

有谁能告诉我为什么这在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,那么为什么弹出错误?我真的很感激任何帮助:)

0 个答案:

没有答案