NSOperation、NSOperationQueue 学习笔记

298 阅读1分钟

NSOperation 和 GCD 对比

GCD 是基于C的底层的API,NSOperation 是基于 GCD 实现的面向对象的解决方案。 GCD 更加轻量级 ,以FIFO的方式 执行并发任务,任务的调度有系统控制; NSOperation 则更加的灵活,可以对 opration 进行 添加依赖,暂停和 回复operationqueue 等。

NSOperation

一、基本用法

本身是一个抽象类,需要用到它的两个子类,分别是NSInvocationOperation 和NSBlockOperation。

只在这里对博客中提到的 做一下个人的学习总结: 在 NSInvocationOperation 使用中:调用start 方法 默认会在当前线程 同步执行任务,只有将operation 添加到operationqueue中才会 进行异步操作

在这种情况下,调用start方法 ,并发的执行了这4个操作(自己没有去尝试,以后还是应该自己去测试一下,加深自己对知识点的印象)

二、自定义 operation

1.简单的自定义:只需要重写main方法即可 (链接查看注意事项) 2.正确的响应取消事件(“看的帖子中 ,均有这个要点”)

在真正开始执行任务之前; 至少在每次循环中检查一次,而如果一次循环的时间本身就比较长的话,则需要检查得更加频繁; 在任何相对来说比较容易中止 operation 的地方。

3.配置并发的operation (大写加粗 ,重点)

示例代码:

都在以下的资料中 :)

参考资料:

mj 老师对两者有很好的总结: 多线程编程2-NSOperation
刘坤大佬:Cocoa深入学习:NSOperationQueue、NSRunLoop和线程安全
雷纯峰大大:iOS 并发编程之 Operation Queues