Swift - 使用 bindToPort 调用时参数标签不正确



我正在尝试将 CocoaAsyncSocket 库与 Swift 一起使用。

我想实现一个UDP服务器和客户端。我已经导入了库,这是我的方法实现之一:

func setupConnection(){
    var error : NSError?
    socket = GCDAsyncUdpSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
    do {
        try socket.bindToPort(PORT, error: &error)
        try socket?.connectToHost(IP, onPort: PORT)
        try socket.beginReceiving()
    } catch _ {
        print(error)
    }
    send("ping")
}

不幸的是,我在绑定到端口上收到此错误:

调用中的参数标签不正确(有":错误:",预期 ':接口:')

查看库中 bindToPort 方法的声明,我有一个与我的实现相对应的原型。

- (BOOL)bindToPort:(UInt16)port error:(NSError **)errPtr

为什么即使尊重原型,我仍然收到此错误?

Objective-C 函数被动态调整为使用 Swift 的错误处理范式,该范式throws而不是使用NSError参数。

如果 Objective-C 方法的最后一个非块参数是 NSError ** 类型,Swift 会用 throws 关键字替换它,以指示该方法可以抛出错误。如果 Objective-C 方法的 error 参数也是它的第一个参数,Swift 会尝试通过从选择器的第一部分删除"WithError"或"AndReturnError"后缀(如果存在)来进一步简化方法名称。如果使用生成的选择器声明了另一个方法,则不会更改方法名称。- 将 Swift 与 Cocoa 和 Objective-C 结合使用 (Swift 2.2) - 错误处理

最新更新