2

我正在尝试使用 GCDAsyncSocket 连接我的应用程序。

我得到编译错误。当我尝试这个时:

    class Connection : NSObject {    
    var connected: Bool
    var tcpSocket: GCDAsyncSocket?
    var myHost: String = "127.0.0.1"
    var myPort: UInt16 = 0

    init() {
        connected = false
    }
    func initialize(host: String, port: UInt16) {

    }
    func connect() {
        tcpSocket = GCDAsyncSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
        var error: NSError?
        tcpSocket!.connectToHost(myHost, port: myPort, error: error)

    }
}

我得到:“在调用中缺少参数'withTimeout'的参数”当更改为:

class Connection : NSObject {    
var connected: Bool
var tcpSocket: GCDAsyncSocket?
var myHost: String = "127.0.0.1"
var myPort: UInt16 = 0

init() {
    connected = false
}
func initialize(host: String, port: UInt16) {

}
func connect() {
    tcpSocket = GCDAsyncSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
    var connectionError: NSError?
    tcpSocket!.connectToHost(myHost, port: myPort, withTimeout: -1.0, error: connectionError)

}}

我得到:“调用中的额外参数'withTimeout'”我很困惑......

4

1 回答 1

1

该方法的定义是:

- (BOOL)connectToHost:(NSString *)host onPort:(uint16_t)port error:(NSError **)errPtr;

仔细查看最后一个参数errPtr会发现,您必须将指针传递给类型为 的变量NSError。这可以迅速转换为使用inout修饰符传递的参数。

所以调用该方法的正确方法是:

tcpSocket!.connectToHost(myHost, onPort: myPort, error: &error)

请注意,您的代码中有一个拼写错误的参数:port: myPort应该是onPort: myPort

于 2014-07-18T07:33:30.833 回答