我正在做一个关于大中央派遣的教程。本质上,教师在一个闭包内部有一些代码,这些代码是长时间运行的任务,因此他将所有内容都放在后台队列中(代码太长而无法编写,也没有提供源代码)。总之,他有这种格式
dispatch_async(QOS_CLASS_BACKGROUND, {
//time consuming tasks which should not be on main queue
})
然而,在闭包中,所有内容都在后台队列中,有一些代码更新了用户界面。我被教导(主要是由udacity),所有UI更新应该在主队列上。因此
dispatch_async(dispatch_get_main_queue(), ...
虽然是教练,而是使用
dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0), {...}
我知道这是合适的,因为QOS_CLASS_USER_INTERACTIVE用于与用户界面链接的即时任务。但是使用vs get_main_queue
的优势是什么?
答案 0 :(得分:3)
dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0)
返回全局并发
队列,适合需要完成的任务"快速"为了更新
用户界面。此队列上的任务优先级高于例如在...上的任务
QOS_CLASS_BACKGROUND
队列。但这是不主队列。
UI更新本身必须在您使用的主队列上完成
dispatch_get_main_queue()
。