【转载】NSOperation

转自:https://www.jianshu.com/p/73b5f5dda06a

  1. 同步与异步函数:
    1.1 同步函数:NSOperation中,任务的start方法是同步函数,start是让任务在当前线程中同步串行执行,并且调用内部的main方法
    a 如果要让任务在当前线程执行,就直接创建任务并start,而不是加入到队列中

    1.2 异步函数:NSOperationQueue都是异步函数。加入到NSOperationQueue中的任务,内部会调用start方法,让任务在当前线程中同步串行执行,并且调用内部的main方法
    
    1.3 NSBlockOperation追加任务也是在新开线程执行,是特例。
    

    02 NSOperation的队列:
    1. 主队列的任务在主线程中执行(同GCD);
    2. 非主队列的任务同时具备串行和并发的能力,通过最大并发数设置队列模式(串行?并发)。

1.NSOperation和GCD的对比?
1) GCD是纯C语言的API,而操作队列则是Object-C的对象。
2)在GCD中,任务用块(block)来表示,而块是个轻量级的数据结构;
相反操作队列中的『操作』NSOperation则是个更加重量级的Object-C对象。

操作队列的好处有:
1)NSOperationQueue可以方便的调用cancel方法来取消某个操作,而GCD中的任务是无法被取消的(安排好任务之后就不管了)。
2)NSOperation可以方便的指定操作间的依赖关系。
3)NSOperation可以通过KVO提供对NSOperation对象的精细控制。
4)NSOperation可以方便的指定操作优先级。
5)通过自定义NSOperation的子类可以实现操作重用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值