Aug*_*erg 9 protocols objective-c ios 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
Run Code Online (Sandbox Code Playgroud)
我希望这是实施它的正确方法; 它不是......
我得'SocketDelegate'不符合协议'SRWebSocketDelegate'
class SocketDelegate:UIViewController, SRWebSocketDelegate{
let socket:SRWebSocket! = SRWebSocket()
override func loadView() {
self.socket.delegate = self
}
func didReceiveMessage(message:AnyObject){
}
}
Run Code Online (Sandbox Code Playgroud)
Sul*_*han 15
答案是:
func webSocket(webSocket: SRWebSocket!, didReceiveMessage message: AnyObject!)
Run Code Online (Sandbox Code Playgroud)
看到
Obj-C中的方法名称webSocket:didReceiveMessage被翻译,例如第一部分是方法名称,其他部分是外部参数名称(didReceiveMessage).另请注意,id变为AnyObject和Obj-C引用被翻译!为隐式解包的选项(这不再是真的,由于添加到Obj-C声明的属性,隐式解包的选项现在很少见).