gpt4 book ai didi

ios - HTTPsendRequest 很慢

转载 作者:行者123 更新时间:2023-11-28 13:20:03 29 4
gpt4 key购买 nike

在这段代码中,我从网站获取一个字符串并将其显示在标签上。在标签上显示字符串真的很慢!大约 10 秒。但是在控制台 println (date) 上打印字符串时是立即的。我该如何解决这个问题?

    func HTTPsendRequest(request: NSMutableURLRequest,
callback: (String, String?) -> Void) {
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, response, error) -> Void in
if (error != nil) {
callback("", error.localizedDescription)
} else {
callback(NSString(data: data,encoding: NSUTF8StringEncoding)!, nil)
}
}

task.resume()
}

func HTTPGet(url: String, callback: (String, String?) -> Void) {
var request = NSMutableURLRequest(URL: NSURL(string: url)!)
HTTPsendRequest(request, callback) }


@IBAction func myButton(sender: AnyObject) {

HTTPGet("http://www.mywebsite.com/test.txt") { (data: String, error: String?) -> Void in
if (error != nil) {
self.myLabel.text=error
println(error)
} else {
self.myLabel.text=data
println(data)
}
}
}

最佳答案

NSURLSession 完成 block 不在主队列上运行。但是,你必须在主线程上运行 UI 更新,所以你应该在那里调度你的 callback,例如:

func HTTPsendRequest(request: NSMutableURLRequest, callback: (String, String?) -> Void) {
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, response, error) -> Void in

dispatch_async(dispatch_get_main_queue()) {
if (error != nil) {
callback("", error.localizedDescription)
} else {
callback(NSString(data: data,encoding: NSUTF8StringEncoding)!, nil)
}
}
}

task.resume()
}

关于ios - HTTPsendRequest 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26674781/

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