gpt4 book ai didi

Swift 使用 Objective-C 类

转载 作者:可可西里 更新时间:2023-11-01 02:28:28 26 4
gpt4 key购买 nike

我正在尝试使用 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’”我很困惑...

最佳答案

该方法的定义是:

- (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

关于Swift 使用 Objective-C 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24819240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com