iOS GCD 与 NSOperationQueue对比

  • NSOperationQueue 是在GCD基础上实现的,只不过是GCD更高一层的抽象。
  • GCD 只支持FIFO 的队列, 而NSOperationQueue可以调整队列的执行顺序。(通过调整权重)
  • NSOperationQueue可以在Operation间设置依赖关系,而GCD不可以。 如果一个Operation依赖另一个Operation所产生的数据的化,你可以设置一个Operation依赖于另一个Operation来实现, NSOperationQueue可以根据依赖关系,可以以正确的顺序执行Queue中的Operation。
  • NSOperationQueue支持KVO。 这就意味着你可以观察任务的状态属性。
    以上几点并不是说在任何处理多任务时一定要选择NSOperationQueue, 因为NSOperationQueue在执行速度上会比GCD慢。