Swift类型检查器拒绝将具有类要求的协议作为类类型

时间:2018-10-26 23:52:32

标签: swift rx-swift

这与https://github.com/RxSwiftCommunity/RxStarscream/pull/23中遇到的错误有关。

我试图概括一个类型,所以我可以模拟它所基于的类。这意味着我想从具体实现转换为协议。

原始类如下:

open class WebSocket : NSObject, StreamDelegate, WebSocketClient, WSStreamDelegate { ... }
    ...
}

我想用该协议代替它,WebSocket已经在扩展:

public protocol WebSocketClient : AnyObject {
    ...
}

这意味着我要替换

public class RxWebSocketDelegateProxy: DelegateProxy<WebSocket, NSObjectProtocol>, ... {
    ...
}

public class RxWebSocketDelegateProxy: DelegateProxy<WebSocketClient, NSObjectProtocol>, ... {
    ...
}

所有这些似乎都很容易-WebSocketClient提供了这里所需的所有功能。令人惊讶的是,我收到错误消息

  

“ DelegateProxy”要求“ WebSocketClient”为类类型

我不确定我在这里缺少什么,并且会感谢指针!

1 个答案:

答案 0 :(得分:0)

尝试使用 @objc ,如下所示:

@objc public protocol WebSocketClient : AnyObject {
    ---
}