我通过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与此有什么关系吗?
答案 0 :(得分:8)
尝试在主线程上执行此操作:
dispatch_async(dispatch_get_main_queue(), { () -> Void in
label.text = "\(responseString)"
})