NSOperation是另外一个“并发技术”,它可以使开发者在不用关心线程的情况下进行多线程操作!!!
NSOperation的底层是用GCD进行封装,但并不是说NSOperation功能就没有GCD强大,相反,NSOperation的一些高级功能在GCD上不好做,但同样地GCD上的一些高级功能在NSOperation上也不好做,现在来看一下NSOperation和GCD的对比!
NSOperation
* 核心概念:把"操作(异步)"添加到队列(全局的并发队列)!
* 主队列 为mainQueue
* OC 的框架,更加面向对象
* 是对 GCD 的封装
* iOS 2.0 推出的,苹果在推出 GCD 之后,对 NSOperation 的底层全部重写了!
* 高级功能:
1、最大操作并发数(GCD不好做)
2、在 iOS 7.0 之前,使用 GCD 和 NSOperation 能够开启的线程数都不多,5~6条
3、从 iOS 8.0 开始,NSOperation能够开很多个线程,如果不控制,会造成资源浪费
4、具备继续,暂停,全部取消功能
5、设置操作之间的依赖关系(GCD中,同步任务是来指定依赖关系!)
GCD
* 将"任务(block)"添加到队列(串行/并发/主队列),并且指定任务执行的函数(同步/异步)
* C 语言的框架,dispatch_xxx 函数
* iOS 4.0 推出的,针对多核处理器的并发技术
* 高级功能:
1、一次性 dispatch_once_t
2、延迟操作 after
3、调度组 (op 可以做,但是做不了太复杂)
相信看完NSOperation和GCD的对比,每个人对多线程操作的都会有自己的看法和选择!