在REST POST请求后,swift在更新视图时很慢

mat*_*att 2 rest drawrect swift

我正在使用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()
Run Code Online (Sandbox Code Playgroud)

这很好用,我得到的数据和所有.现在有两件事表现得非常不同,我无法弄清楚原因.

该行:println(responseString)按预期立即打印数据,但是,该行label.text = "\(responseString)"大约需要10秒钟来更新标签的文本.

有什么想法吗?DrawRect与此有什么关系?

And*_*etz 8

尝试在主线程上这样做:

dispatch_async(dispatch_get_main_queue(), { () -> Void in
        label.text = "\(responseString)"
    })
Run Code Online (Sandbox Code Playgroud)

  • 没问题!无论何时在后台线程上进行计算,网络请求等,然后更新UI,总是在主线程上这样做. (2认同)