HTTP POST请求后UIView更改延迟

时间:2016-09-07 09:47:55

标签: ios swift nsurlsession

我已使用此代码发出HTTP POST请求:

let myURL = NSURL(string: serverURL)

let request = NSMutableURLRequest(URL: myURL!)

request.HTTPMethod = "POST"

request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)

let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in

    if error != nil {
        print(error)
    } else {
        let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
        print(responseString)
        self.view.backgroundColor = UIColor.redColor()
    }

}

task.resume()

我有经验,在打印responseString几秒钟后,视图的backgroundColor发生了变化。

为什么这样,我怎么能同时做到这一点?

感谢。

2 个答案:

答案 0 :(得分:3)

始终在主线程上执行UI更改,因此请像这样在主线程上更改您的视图backgrondColor

dispatch_async(dispatch_get_main_queue(),{
    self.view.backgroundColor = UIColor.redColor()
}

答案 1 :(得分:0)

您需要在主线程上执行UI更改才能使其更快,因为我认为http请求是异步进行的,例如下载图像。因此,在您的代码中,您可以执行以下操作

dispatch_async(dispatch_get_main_queue(),{
    self.view.backgroundColor = UIColor.redColor()
}