四、NSOperation
-
GCD 是 iOS 4.0 的时候引入的(NSOperationQueue也是iOS4.0引入的,并且它的内部就是用GCD 实现的)
-
将任务(block)添加到队列(串行/并发(全局)),指定 执行任务的方法(同步(阻塞)/异步)
-
拿到 dispatch_get_main_queue()。 线程间通信
-
NSOperation无法做到,一次性执行,延迟执行,调度组(op相对复杂)
-
使用block 使得代码简洁了,效率变高了。
-
NSOperation 在 iOS 2.0就出现了 (后来苹果改造了NSOperation的底层)
-
将操作(异步执行)添加到队列(并发/全局)
-
[NSOperationQueue mainQueue] 主队列。 任务添加到主队列, 就会在主线程执行
-
提供了一些GCD不好实现的,”最大并发数“
-
暂停/继续 --- 挂起
-
取消所有的任务
-
依赖关系
-
有KVO,可以监测operation是否正在执行(isExecuted)、是否结- 束(isFinished),是否取消(isCanceld)。
-
NSOperationQueue可以 方便的管理并发、NSOperation之间的优先级。
- 两者对比:就我在开发中的使用情况来看,不需要用到依赖和最大并发数就用GCD来进行多线程操作,因为苹果对其进行过性能上的优化,效率更高。
网友评论