我在Swift中遇到了许多关于异步任务的困惑。我想要做的是像这样的事情...
func buttonPressed(button: UIButton) {
// display an "animation" tell the user that it is calculating (do not want to freeze the screen
// do some calculations (take very long time) at the background
// the calculations result are needed to update the UI
}
我尝试做类似这样的事情:
func buttonPressed(button: UIButton) {
let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_async(queue) { () -> Void in
// display the animation of "updating"
// do the math here
dispatch_async(dispatch_get_main_queue(), {
// update the UI
}
}
}
然而,我发现界面在等待我的计算完成之前已经更新了。我对异步队列的使用感到困惑。有人能帮忙吗?谢谢。