实例方法几乎匹配可选要求

Instance method nearly matches optional Requirement

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

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

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

提前致谢!

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

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

导入为:

func webSocketDidOpen(_ webSocket: SRWebSocket)

但是你实现了:

func webSocketDidOpen(_ webSocket: SRWebSocket!)

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