NSOperation与GCD的主要区别

1、GCD和核心是C语言写的系统服务,执行和操作简单高效,因此NSOperation底层也通过GCD实现,换个说法就是NSOperation是对GCD更高层次的抽象,这是它们之间最本质的区别。因此如果希望自定义任务,建议使用NSOperation;

 

2、依赖关系,NSOperation可以设置两个NSOperation之间的依赖,第二个任务会在第一个任务完成后再执行,但是GCD无法设置依赖关系,不过可以通过dispatch_barrier_async来实现这种效果;

 

3、通过KVO(键值观察)的方式,在NSOperation中很容易判断Operation当前的状态(是否执行、是否取消等),但是GCD无法通过KVO进行判断;

 

4、优先级,NSOperation可以设置自身的优先级,但是优先级高的不一定先执行,GCD只能设置队列的优先级,无法在执行的block设置优先级;

 

5、继承性,NSOperation是一个抽象类,实际开发中常用的两个类是NSInvocationOperation和NSBlockOperation,同样我们可以自定义NSOperation,GCD执行任务可以自由组装,没有继承那么高的代码复用度;

 

6、效率,直接使用GCD效率确实会更高效,NSOperation会多一些开销,但是通过NSOperation可以获得“依赖”、“优先级”、“继承”、“键值对观察”这些优势,虽然多了一些开销但是在实际开发中效益率很大。

 

posted @   码出境界  阅读(3679)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示