我刚刚看了这个raywenderlich.com video并采取了this screenshot有问题的代码 (@ 22:30)。
我想知道 mainQueue.async
是如何在 defaultQueue.async
之后完成的,尽管它被放在我认为是更高优先级的队列(默认为 userInteractive
或 userInitiated
,但不管高于 default
,对吧?)。我观看了整个视频,感觉在看到之前我对所有内容都有很好的把握。有人可以解释一下吗?非常感谢。
最佳答案
屏幕截图中没有足够的代码来真正了解发生了什么,但我认为问题是这样的:
主队列比较特殊;与所有其他调度队列不同,添加到主队列的 block 由应用程序的主运行循环调度。所有其他调度队列在任何可用线程上执行 block 。
因此,虽然您在后台排队运行的 block 几乎会立即启动,但您在主线程上排队运行的任何内容都必须等到主运行循环循环,并且必须与计时器、用户输入事件一起等待,等等。
关于ios - 主队列异步与默认队列异步说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56249546/