我正在查看以下代码:

NSURLConnection.sendAsynchronousRequest(urlRequest, queue: NSOperationQueue.mainQueue()) { (response, data, error) -> Void in
    //code
}

我正试图深入研究苹果开发者指南,并试图理解这一切意味着什么。我主要是对那些说NSOperationQueue.mainQueue()的部分感到困惑。当我命令单击NSOperationQueue时,可以调用另一个方法,称为currentQueue()。我想知道有什么不同。
我看了开发人员指南,他们说了currentQueue()Returns the operation queue that launched the current operation.mainQueue()Returns the operation queue associated with the main thread.但是,我不确定这到底是什么意思。我试着在网上查那些术语,它们有太多行话,我很难理解。如果你向一个15岁的孩子解释,你会怎么解释?

最佳答案

mainQueue在主线程上运行其操作,主线程还负责在其运行循环中处理应用程序的事件。事件的例子包括触摸、运动、计时器触发或UI请求。
currentQueue可能与mainQueue相同,也可能不同。操作可以使用currentQueue来确定它在哪个队列上运行。
在不同队列上运行操作的目的是不延迟或抢占更关键的交互任务(例如滚动或键入),而使用运行时间较长、不太关键的后台任务(例如下载或图像处理)。
您可以在Concurrency Programming Guide中阅读有关队列的更多信息

08-06 08:17