我正在使用 Swift 语言在 iOS 上实现 UDP 侦听器。
为此,我正在转述CocoaAsyncSocket https://github.com/robbiehanson/CocoaAsyncSocket项目。
我成功地使用 Bridging-Header.h 导入了 CocoaAsyncSocket 库,我可以从 Objective-C 类中调用函数,但我无法在 swift 上编写委托函数。
这是我设置 Socket 并将 ViewController.swif 定义为侦听器的委托类的代码:
func setupSocket() {
var udpSocket : GCDAsyncUdpSocket = GCDAsyncUdpSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
var error : NSError?
let port : UInt16 = 12121
let address : String = "228.5.12.12"
udpSocket.bindToPort(port, error: &error)
udpSocket.joinMulticastGroup(address, error: &error)
udpSocket.enableBroadcast(true, error: &error)
println("228.5.12.12")
}
这是 Objective-C 中以前的委托函数:
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data
fromAddress:(NSData *)address
withFilterContext:(id)filterContext;
最后,这就是我在 Swift 上实现该函数的方式:
override func udpSocket(sock : GCDAsyncUdpSocket!, didReceiveData data : NSData!, fromAddress address : NSData!, withFilterContext filterContext : AnyObject!) {
println(data)
}
ViewController 类被声明为实现正确的协议:
class ViewController: UIViewController, GCDAsyncUdpSocketDelegate {
...
}
除了覆盖之外,我没有遇到任何编译错误。
问题:我究竟做错了什么?