swift 在 REST POST 请求后更新视图很慢
swift is slow at updating view after a REST POST request
我正在用 swift 向我的服务器发送一些 POST 请求,通常是:
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
println("error=\(error)")
return
}
let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
println(responseString) //this is fast
label.text = "\(responseString)" // this is very slow
}
task.resume()
效果很好,我得到了所有数据。现在有两件事的行为非常不同,我不明白为什么。
行:println(responseString)
按预期立即打印数据,但是,行 label.text = "\(responseString)"
需要大约 10 秒来更新标签的文本。
知道为什么吗? DrawRect 与此有什么关系吗?
尝试在主线程上这样做:
dispatch_async(dispatch_get_main_queue(), { () -> Void in
label.text = "\(responseString)"
})
我正在用 swift 向我的服务器发送一些 POST 请求,通常是:
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
println("error=\(error)")
return
}
let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
println(responseString) //this is fast
label.text = "\(responseString)" // this is very slow
}
task.resume()
效果很好,我得到了所有数据。现在有两件事的行为非常不同,我不明白为什么。
行:println(responseString)
按预期立即打印数据,但是,行 label.text = "\(responseString)"
需要大约 10 秒来更新标签的文本。
知道为什么吗? DrawRect 与此有什么关系吗?
尝试在主线程上这样做:
dispatch_async(dispatch_get_main_queue(), { () -> Void in
label.text = "\(responseString)"
})