Невозможно скомпилировать код Swift 2, вызывающий в библиотеке Objective C (модуль)
Я пытаюсь использовать SocketRocket (модуль Objective-C) из Swift 2. У меня есть заголовок моста.
Вот что я пытаюсь:
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'
Мне кажется, что я делаю именно то, что говорится в сообщении об ошибке. Что я делаю неправильно?
1 ответ
Я понял.
didReceiveMessage
метод объявлен обязательным в протоколе. Проблема с вашим методом подписи. Ваш didReceiveMessage
сигнатура метода не совпадает с сигнатурой метода протокола.
Замени это:
func websocket(webSocket: SRWebSocket!,
didReceiveMessage message: AnyObject!) -> Void {
}
С:
func webSocket(webSocket: SRWebSocket!,
didReceiveMessage message: AnyObject!) {
}
Это именно то, на что Xcode жалуется, что требуемый метод протокола отсутствует.
Я проверил его в конце, и он работает нормально.
Совет: пожалуйста, попробуйте использовать IntelliSense XCode, чтобы избежать подобных ошибок.