实例方法几乎匹配可选的Requirement

时间:2017-07-19 15:27:17

标签: ios objective-c swift3 swift-protocols socketrocket

我在swift中有一个类,它实现了用objective-c编写的SRWebSocketDelegate协议。当我尝试实现它的可选方法webSocketDidOpen时,我收到以下警告: enter image description here

此外,当我运行我的代码时,没有调用webSocketDidOpen的实现,代码直接转到webSocket(_ webSocket: SRWebSocket, didReceiveMessageWith string: String)

如何实现我在Objective-C中编写的协议的可选方法,并消除这些警告?

提前致谢!

1 个答案:

答案 0 :(得分:3)

SRWebSocket.h已注释NS_ASSUME_NONNULL_BEGIN,因此默认情况下所有值均为nonnull。这意味着:

- (void)webSocketDidOpen:(SRWebSocket *)webSocket;

导入为:

func webSocketDidOpen(_ webSocket: SRWebSocket)

但你实施了:

func webSocketDidOpen(_ webSocket: SRWebSocket!)

SRWebSocketSRWebSocket!的类型不同。删除!。这可能是重命名fixit将为您做的。