我正在查看以下代码:
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中阅读有关队列的更多信息