NSOperation、NSOperationQueue 学习笔记

NSOperation 和 GCD 对比

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

NSOperation

一、基本用法

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

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


NSOperation、NSOperationQueue 学习笔记_第1张图片

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

二、自定义 operation

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

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

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

NSOperation、NSOperationQueue 学习笔记_第2张图片

示例代码:

都在以下的文献中 囧rz

参考文献:

mj 老师对两者有很好的总结:
http://www.cnblogs.com/mjios/archive/2013/04/19/3029765.html
刘坤大大:
https://blog.cnbluebox.com/blog/2014/07/01/cocoashen-ru-xue-xi-nsoperationqueuehe-nsoperationyuan-li-he-shi-yong/
雷纯峰大大:
http://blog.leichunfeng.com/blog/2015/07/29/ios-concurrency-programming-operation-queues/

PS

还是需要自己动手实践,才能有更深刻的印象

你可能感兴趣的:(NSOperation、NSOperationQueue 学习笔记)