GCD 相关知识以前写过一些东西,点击查看
GCD主要特点:
1)GCG 是iOS4.0推出的,主要针对多核CPU 做了优化
2)GCD是 C 语言的技术
3)GCD 提供了一些 NSOperation 不具备的功能,比如一次性执行(创建单例),延迟执行,调度组.
NSOperation 特点:
1) NSOperation 是 iOS2.0后推出的,iOS4.0之后重写了NSOperation.
2) NSOperation 将操作(异步的任务)添加到队列(并发队列),就会执行制定操作的函数.
3) NSOperation里可以方便的设置操作:
1⃣️最大并发数
2⃣️队列的暂停/继续
3⃣️取消所有的操作
4⃣️指定操作之间的依赖关系(GCD可以用同步实现)
**使用NSOperation 需要注意几点点:
1) 注意避免产生循环依赖
2) 要先设置依赖关系,然后添加到队列
GCD 和 NSOperation的区别主要表现在以下几方面:
1) GCD是一套 C 语言API,执行和操作简单高效,因此NSOperation底层也通过GCD实现,这是他们之间最本质的区别.因此如果希望自定义任务,建议使用NSOperation;
2) 依赖关系,NSOperation可以设置操作之间的依赖(可以跨队列设置),GCD无法设置依赖关系,不过可以通过同步来实现这种效果;
3) KVO(键值对观察),NSOperation容易判断操作当前的状态(是否执行,是否取消等),对此GCD无法通过KVO进行判断;
4) 优先级,NSOperation可以设置自身的优先级,