GCD和NSOperationQueue的区别

91 阅读1分钟
  1. GCD和NSOperationQueue的比较
GCDNSOperationQueue
GCD是C的函数封装NSOperation是Objective-C类,可以子类化。底层由GCD实现。
支持取消整个Queue的任务,支持block任务取消dispatch_block_cancel支持取消单个NSOperation或整个Queue的任务
支持暂停和恢复dispatch_suspend 和 dispatch_resume支持队列暂停和恢复queue.suspended
通过group来实现支持任务之间的依赖关系
队列具有优先级任务具有优先级
GCD 是严格的队列,先进先出 FIFONSOperation可以改动 优先级(或者说服务质量)改变执行顺序
GCD信号量dispatch_semaphore可以设置最大并发数
可以采用KVO监听任务状态
GCD性能更佳,使用简单NSOperationQueue更灵活,框架封装往往采用NSOperationQueue
  1. NSOperation 和 GCD 的关系
  • GCD 是面向底层的 C 语言的 API
  • NSOperation 是封装后的 GCD ,是 GCD 的高级抽象

image.png