NSOperation 和 GCD 的区别
来源:互联网 发布:撮合交易平台源码 编辑:程序博客网 时间:2024/05/20 10:13
1. GCD是底层的C语言构成的API,而NSOperationQueue及相关对象是Objc的对象。在GCD中,在队列中执行的是由block构成的任务,这是一个轻量级的数据结构;而Operation作为一个对象,为我们提供了更多的选择;
2. 在NSOperationQueue中,我们可以随时取消已经设定要准备执行的任务(当然,已经开始的任务就无法阻止了),而GCD没法停止已经加入queue的block(其实是有的,但需要许多复杂的代码);
3. NSOperation能够方便地设置依赖关系,我们可以让一个Operation依赖于另一个Operation,这样的话尽管两个Operation处于同一个并行队列中,但前者会直到后者执行完毕后再执行;
4. 我们能将KVO应用在NSOperation中,可以监听一个Operation是否完成或取消,这样子能比GCD更加有效地掌控我们执行的后台任务;
5. 在NSOperation中,我们能够设置NSOperation的priority优先级,能够使同一个并行队列中的任务区分先后地执行,而在GCD中,我们只能区分不同任务队列的优先级,如果要区分block任务的优先级,也需要大量的复杂代码;
6. 我们能够对NSOperation进行继承,在这之上添加成员变量与成员方法,提高整个代码的复用度,这比简单地将block任务排入执行队列更有自由度,能够在其之上添加更多自定制的功能。
7. GCD 是严格的队列,先进先出 FIFO;NSOperation可以改动 优先级(或者说服务质量)改变执行顺序
8. NSOperation的高级:最大并发数,控制线程个数,优化了线程的暂停、继续、取消功能(GCD实现起来太难,可以用 KVO ),依赖关系,可以让异步任务同步执行.
- GCD和NSOperation的区别
- GCD和NSOperation的区别
- NSOperation 和 GCD 的区别
- GCD 和 NSOperation的区别
- ios-GCD和NSOperation的区别
- iOS NSOperation 和 GCD区别
- GCD和NSThread以及NSOperation之间的区别
- Swift之NSOperation及其和GCD的区别
- GCD和NSOperation的关系
- GCD和NSOperation的比较
- NSOperation和GCD的原理
- 【iOS】多线程NSOperation 与 GCD的区别
- NSThread、NSOperation和GCD的总结
- NSoperation和GCD的使用场景
- GCD和NSOperation总结
- GCD和NSOperation总结
- NSOperation 和 GCD
- GCD和NSOperation对比
- 途客圈见面会-要点总结
- ORA-06511: PL/SQL: cursor already open
- Scala入门之OOP
- Hibernate 注解注册
- 标准Web系统的架构分层
- NSOperation 和 GCD 的区别
- 线性表的C语言实现
- 拦截器利用装饰类的对getParameter()和getParameterValues()方法的重写对中文编码的转换
- Deep Residual Network实验复现
- 关于tomcat 8080端口被占用
- jsp指令
- a++ + ++a
- android设计模式系列之组合模式
- 数据库表创建注意事项