更改 UILabel 文本有延迟,但为什么呢?

Changing UILabel text has delay, but why?

在我的应用程序中,我想设置 UILabel 的文本。文本来自 JSON-object。我将我的 UILabel 添加到我的故事板,设置 IBOutlet 并调用我的异步方法来获取我的 JSON 对象。 在响应方法中,我设置了 UILabel 的文本。但是文本更改需要几秒钟。 当响应到来时,我将其打印到控制台。在那里我可以看到,延迟不是来自异步方法。 响应来了,我可以在控制台中看到它。等待 UIlabel 更改几秒钟。 我不明白这种行为,是否有立即刷新 UIlabel 的技巧?

一些代码:

@IBOutlet weak var label_news: UILabel!;

override func viewDidLoad() {
    super.viewDidLoad()
    self.label_news.text = "CHANGE";
    rcall.GetNews_GET_NewsResponse_0(self.NewsResponseHandler);
}

func NewsResponseHandler(resp:NewsResponse!){
    self.label_news.text = resp.NewsText;
    println(resp.NewsText);
}

抱歉,如果这是一个初学者问题,swift 故事板对我来说是全新的。

此致

就像 Rob 在评论中所说的那样,所有 UI 更改都需要在主线程上完成。我还没有在 Swift 中实现它,但是 Objective-C 和我假设的 Swift 在下面...

Objective-C

dispatch_async(dispatch_get_main_queue(), ^{
    self.label_news.text = resp.NewsText;
});

Swift:

dispatch_async(dispatch_get_main_queue()) {
    self.label_news.text = resp.NewsText;
}

c_rath的回答是正确的。在 swift 3 中,语法(再次)更改为

DispatchQueue.main.async {
    self. label_news?.text = resp.NewsText
}