Operation Queues
一个Operation Queue是一个Cocoa等价的并发dispatch queue,它是通过NSOperationQueue类来实现。
dispache queue执行任务是先进先出的,operation queue会考虑其他因素来决定任务的执行顺序。这些因素中的主要因素是给定任务依赖于其他任务的完成。你配置依赖关系当定义你的任务时,然后使用他们来创建负责的执行顺序。
你提交给operation queue的任务必须是NSOperation类的实例。一个operation 对象是一个Objective C的对象封装了你需要执行的工作和你执行时需要的数据。因为NSOperation类本质是一个抽象类,你需要定义自己的子类来执行你的任务。然而,Foundation 框架提供了一些具体的子类你能够创建和使用来执行任务。
Operation Object产生key-value observing KVO通知,这是一个有用的方法来监视你任务的完成情况。尽管operation queues 总是执行operations 并发的,需要时你可以使用依赖关系来确保他们串行的执行。
重要:永远不要修改一个operation对象在它已经被添加到queue中以后。当在queue中等待时,operation可能在任何时候开始执行,所以改变它的依赖关系或者它包含的数据可能造成不利的影响。如果你希望直到operation的状态,你可以使用NSOperation类的方法来确定operation是否在运行,等待运行或者已经结束了。