【发布时间】:2018-06-06 18:22:48
【问题描述】:
我相信当我调用调度队列时我明白它在做什么,但我不确定我应该在什么时候使用它,以及当我使用它时它的优点是什么。
如果我的理解是正确的,DispatchQueue.main.async { // code } 将调度包含在闭包中的代码以异步方式在主调度队列上运行。主队列具有最高优先级,通常保留用于更新 UI 以最大限度地提高应用响应能力。
我感到困惑的是:在调度队列闭包中更新 UI 元素与在闭包之外在同一位置编写代码到底有什么区别?在视图的主体中执行代码是否会更快地加载方法而不是将其发送到调度队列?如果不是,为什么?
代码示例:
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
updateUI()
}
}
对比:
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.async {
updateUI()
}
}
}
哪一个会更新 UI 更快?
【问题讨论】:
标签: swift multithreading user-interface