更新标签需要太长时间(快速)

时间:2014-09-24 09:50:01

标签: ios xcode swift

我是初学者的快速开发者。我被这个天气应用程序困扰了。我正在下载网站数据,然后在我的标签上显示。

不幸的是,整个过程需要10秒才能更新我的标签。

这可能不是因为网络连接,因为控制台会立即更新。

感谢您的建议。

enter image description here

4 个答案:

答案 0 :(得分:12)

代码可能在辅助线程上运行。您所做的任何UI更改都应在主线程上进行。所以试试这个:

dispatch_async(dispatch_get_main_queue()) {
    // update label
}

这应立即更新您的标签。

答案 1 :(得分:6)

以前,我们会选择调度方法(sync vs async),然后选择我们要将任务分派到的队列。更新的GCD颠倒了这个顺序 - 我们首先选择队列,然后应用调度方法。

  

Swift 3

现在在 Swift 3 中,GCD库的更新方式如下:

DispatchQueue.main.async(execute: {
    // UI Updates
})

我希望这对你有所帮助。

答案 2 :(得分:0)

回答可能为时已晚,但在Swift 3中,逻辑应该是这样的。

DispatchQueue.global(qos: .background).async {
// Background Thread Or Service call Or DB fetch etc
DispatchQueue.main.async {
    // Run UI Updates and other logic
}}

答案 3 :(得分:0)

您的代码有多个问题。

第一:它具有强大的参考周期

通过将其关闭来修复它。

 [weak weakSelf = self]

SECOND:在主线程中更新UI

DispatchQueue.main.async {
 //Update UI
 weakSelf?.mReslut.text = ""
}