iOS多线程中的实际方案之四NSOperation

四、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来进行多线程操作,因为苹果对其进行过性能上的优化,效率更高。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容