当我们不指定任务时,使用哪个队列来执行任务?

Which queue is used to execute a task when we don't specify it?

如果我们不指定队列来执行任务,系统会使用主队列来执行吗?更具体地说,我想知道

之间的区别
DispatchQueue.global(qos: .background).async {
    let image = downloadImageFromInternet()
    DispatchQueue.main.async {
        self.myImageView.image = image
    }
}

let image = downloadImageFromInternet() //didn't specify a queue to execute this
DispatchQueue.main.async {
    self.myImageView.image = image
}

If we don't specify a queue to execute a task, will system use main queue to execute it?

不一定。当你说

let image = downloadImageFromInternet()

您已经在排队了。由于您没有另外指定,因此这是您进行调用的队列。它是什么队列取决于这段代码是如何开始的。代码启动的唯一方式最终是因为运行时调用了它。运行时在某个队列上调用您的代码。除非文档另有说明,否则这将是主队列,但请始终检查以确保。