我正在尝试使用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' 我很困惑......
答案 0 :(得分:1)
该方法的定义是:
- (BOOL)connectToHost:(NSString *)host onPort:(uint16_t)port error:(NSError **)errPtr;
仔细查看最后一个参数errPtr
会发现您必须将指针传递给NSError
类型的变量。这可以在swift中转换为使用inout
修饰符传递的参数。
所以调用该方法的正确方法是:
tcpSocket!.connectToHost(myHost, onPort: myPort, error: &error)
注意您的代码中存在错误参数:port: myPort
应为onPort: myPort