zoukankan      html  css  js  c++  java
  • 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可以获得“依赖”、“优先级”、“继承”、“键值对观察”这些优势,虽然多了一些开销但是在实际开发中效益率很大。

  • 相关阅读:
    查询sqlserver 表结构呀
    每日笔记---使用@ConfigurationProperties读取yml配置
    注解@Slf4j
    maven 环境变量 设置
    maven settings 设置
    如何配置Java环境变量
    SSH通过SSH代理连接到内网机器
    解决jenkins slave 中文乱码 encoding=ANSI_X3.4-1968
    netcore 获取本地网络IP地址
    centos7安装libgdiplus。netcore生成验证码,处理图片
  • 原文地址:https://www.cnblogs.com/cchHers/p/14973195.html
Copyright © 2011-2022 走看看