快速、objective-c 协议实施

2024-03-07

仍在尝试习惯swift,但由于我的obj-c知识接近0,所以我一直无法实现这个SocketRocket协议。任何帮助将不胜感激

这是我尝试实现的 obj-c 委托

@protocol SRWebSocketDelegate <NSObject>

// message will either be an NSString if the server is using text
// or NSData if the server is using binary.
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message;

@optional

- (void)webSocketDidOpen:(SRWebSocket *)webSocket;
- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error;
- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean;

@end

我希望这是实现它的正确方法;这不是...
I get “SocketDelegate”不符合协议“SRWebSocketDelegate”

class SocketDelegate:UIViewController, SRWebSocketDelegate{
    let socket:SRWebSocket! = SRWebSocket()

    override func loadView() {
        self.socket.delegate = self
    }    

    func didReceiveMessage(message:AnyObject){

    }
}

答案是:

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

see

Swift 参考书中的函数 https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html#//apple_ref/doc/uid/TP40014097-CH10-XID_240

Obj-C 中的方法名称webSocket:didReceiveMessage翻译后如第一部分是方法名称,其他部分是外部参数名称(didReceiveMessage)。另请注意id变成AnyObject和 Obj-C 引用被翻译为!作为隐式解包选项(这不再是真的,由于添加到 Obj-C 声明中的属性,隐式解包选项现在很少见)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速、objective-c 协议实施 的相关文章

随机推荐