NSOperationQueue && GCD

GCD是纯C的API,任务用块表示,块是个轻量级数据结构。而NSOperationQueue是OC对象
哪些情况下应该使用GCD?

  • 如果要实现同步机制,建议优先选择GCD而不是@synchronized或者NSLock。
  • 如果代码只执行一次,使用dispatch_once更方便。

哪些情况下更应该使用NSOperation比?

  • 取消某个操作。
    在NSOperation对象上调用cancel方法,该方法会设置对象内的标志位,用以表明此任务不需执行了。但是已经启动的任务无法取消。而GCD那套架构是“安排好任务之后就不管了”。

  • 指定操作间的依赖关系。

  • 通过键值观测机制监控NSOperation对象的属性。
    NSOperation对象有很多属性都适合通过KVO来监听。比如可以通过isCancelled属性来判断是否已取消。还可以通过isFinished来判断任务是否已经完成。

*指定操作的优先级。
操作的优先级表示此操作与队列中其他操作之间的优先关系。优先级高的先执行,优先级低的后执行。

  • 重用NSOperation对象。
    系统内置了NSOperation(NSBlockOperation)子类供开发者使用,要是不想使用,可以自己创建。

你可能感兴趣的:(NSOperationQueue && GCD)