0

我正在尝试使用 Swift 2 中的 SocketRocket(一个 Objective-C pod)。我创建了一个桥接头。

这是我正在尝试的:

import SocketRocket
class WS3: NSObject, SRWebSocketDelegate {
    func websocket(webSocket: SRWebSocket!, 
                   didReceiveMessage message: AnyObject!) -> Void {
    }
}

编译器错误信息是:

Error:Error:Build failed with 1 error and 0 warnings in 1s 685ms
/Users/jao/Desktop/consulting/blackring/Black Ring/Black Ring/WS3.swift
    Error:Error:line (8)type 'WS3' does not conform to protocol 'SRWebSocketDelegate'
    x86_64
    Note:Note:class WS3: NSObject, SRWebSocketDelegate {
    Note:Note:      ^
    Note:Note:    public func webSocket(webSocket: SRWebSocket!, didReceiveMessage message: AnyObject!)
    Note:Note:                ^
SocketRocket.SRWebSocketDelegate
    Note:Note:protocol requires function 'webSocket(_:didReceiveMessage:)' with type '(SRWebSocket!, didReceiveMessage: AnyObject!) -> Void'

在我看来,我正在做错误消息所说的我应该做的事情。我究竟做错了什么?

4

1 回答 1

1

我想到了。

didReceiveMessage方法在协议中声明为必需。问题在于您的方法签名。您didReceiveMessage的方法签名与协议的方法签名不匹配。

代替它:

func websocket(webSocket: SRWebSocket!,
        didReceiveMessage message: AnyObject!) -> Void {
    }

和:

func webSocket(webSocket: SRWebSocket!,
    didReceiveMessage message: AnyObject!) {

}

这正是 Xcode 抱怨缺少所需的协议方法的原因。

我最后测试了它,它工作正常。

提示:请尝试使用 Xcode 的智能感知来避免此类错误。

于 2016-02-16T05:09:17.137 回答