串联NSOperation知识点
NSOperation
NSOperation的使用
创建NSOperationQueue
NSOperation *queue = [[NSOperationQueue alloc] init];
复制代码
创建NSOperation子类对象
NSOperation *operation = [[NSOperation alloc] init];
需要重写NSOperation任务执行函数。
MyOperation *operation = [[MyOperation alloc] init];
复制代码
operation.completionBlock = ^() {};
// 需注意,
//completionBolck的执行不在主线程,也不在operation的队列中。
//是系统分配的一个后台线程
复制代码
将NSOperation加入NSOperationQueue
[queue addOperation:operation];
复制代码
ios为了让我们更好的使用NSOperation,自定义了很多继承类
NSBlockOperation
+ (instancetype)blockOperationWithBlock:(void(^)(void))block;
复制代码
NSInvocationOperation
- (nullable instancetype)initWithTarget:(id)target selector:(SEL)sel object:(nullable id)arg;
复制代码
NSOperation并发数
系统默认提供:
@property NSInteger maxConcurrentOperationCount;
// = 1时,为Serial Queue
// > 1时,为Concurrent Queue@property (readonly)NSUInteger operationCount;
//表示当前正在执行的queue中有多少任务。
复制代码
GCD vs NSOperation
NSOperation支持取消。封装,能适应更复杂的操作和提供更精细化的控制。

既是queue被cancel了,最终仍会被执行。
等待
NSOperation不需要group的概念。
- (void)waitUntilFinished;
- (void)waitUntilAllOperationsAreFinished;
复制代码
Dependency
@interface NSOperation : NSObject {- (void)addDependency:(NSOperation *)op;- (void)removeDependency:(NSOperation *)op;
}@property (readonly, copy)NSArray<NSOperation *>*dependencies;
复制代码
循环依赖 显示循环依赖 隐式循环依赖
优先级
@property NSOperationQueuePriority queuePriority;
复制代码
Operation进入queue的原则是先进先出。但当优先级大的operation准备进入queue时,它会插队到比他小的operation前面。但不会替换掉正在执行的operation。
NSOperationQueue常用属性
@property (getter = isSuspended)BOOL suspended;
@property (nullable, copy)NSString *name;
@property NSQualityOfService qualityOfService;
复制代码
总结:
NSOperation和NSOperationQueue的基本概念
自定义NSOperation子类
NSOperation状态和取消
NSOperation Dependency
waitUntilFinished
name,优先级,暂停
串联NSOperation知识点相关推荐
- 原来Python用得好,工作这么好找
Python是多数平台上写脚本和快速开发应用的编程语言,适用场景非常广,Web开发.大数据分析.机器学习.自动化运维/测试,甚至日常工作中的各种各样的问题都能用Python来解决.Python不仅可以 ...
- 弃 Windows 而拥抱 Linux 之后,这本书教了新玩法
微软弃 Windows 而拥抱 Linux 之后,国内首本SQL Server On Linux的图书出版,这本书教了很多新玩法. SQL Server作为微软公司著名的数据库管理系统,多年以来一直稳 ...
- python基础教程多少钱-厦门厦禾路Python基础教程培训费用多少-泰兴市新闻
厦门厦禾路Python基础教程培训费用多少-泰兴市新闻 [美力程]是厦门中信教育旗下,专注于中国6-18岁青少年STEAM创客教育的先锋品牌.依托中心20+年积累的计算机教育经验和职业IT精英教研团队 ...
- python自动化测试-python自动化测试
系统教程:以实战项目为核心,多种测试框架 测试工具为基础的入门教程. 内容丰富:包括Selenium.Appium.Postman.Charles等10多种工具. 图示讲解:包括300多个图解展示,加 ...
- Python数据预处理:机器学习、人工智能通用技术(1)
1 什么是数据预处理 数据预处理简而言之就是将原始数据装进一个预处理的黑匣子之后,产生出高质量数据用来适应相关技术或者算法模型.为了大家更明确的了解数据预处理,我们举个新闻分类的例子: 将原始的数据直 ...
- matlab与数学实验心得体会,数学matlab实验心得体会
关于的数学学习心得 数学是一门重要的学科,相信大家都想学好它,下面我想和大家分享一下我的学习方法. 1.课时预习. 以前在初中时,没有课前预习的习惯. 后来上高中了,发现没有预习只是带着课本到课堂上听 ...
- Java实现-五子棋
因为是用awt,swing的所做,是现在几乎被淘汰的java早期技术了,但是用来在开始学java时去串联其他知识点还是很好用的一个方式. 这个主要用了三个类,也是参考着现成的写的,不过优化了几个地方的 ...
- 有道English课程总结
最近跟有道逻辑英语课程重新复习了一下英语语法,感觉还是比较有趣的,课程讲授的都是钟平自己创建的体系知识,虽然语法细节比较少,但是总结心得还是挺精辟的,如果你学了很久的英语,还是很痛苦,建议看钟平的 ...
- 数据分析可视化15 PyEcharts Flask 集成案例
概述 上一节,我基于 PyEcharts 的官方案例,学习了 PyEcharts 与 Flask 整合的两种方法和数据刷新的两种实现机制.本节我会结合模块三:典型案例篇中的实际案例,带你了解如何基于 ...
最新文章
- python开发视频播放器_python视频播放器
- android studio ndk 书籍,NDK 在AndroidStudio3.2.1版本集成方法(ndk-build方式)
- transform css3 的使用及理解
- [转]TCP(HTTP)长连接和短连接区别和怎样维护长连接
- opencv cv::mat::data是什么数据类型?
- jms学习-基本概念(一)
- iOS开发 - StoryBoard + UIScrollView + UIView
- 实战:kafka实现日志收集系统
- 计算机考试用户名和密码,计算机模块考试忘记了用户名和密码怎么办
- kuka机器人外部轴异步_KUKA机器人外部轴标准配置
- ABAQUS 转子动力学载荷
- 数据库在开发中的作用
- HTML 编辑器-网页制作是用什么来做的?-2
- 科普:QLED和OLED到底有何区别?
- web项目查询mysql中文显示为问号_MySQL 表中的中文显示为问号
- mac强制退出程序的几种方法
- oracle数据库19c驱动包,Oracle Database 19c 19.3 Windows x64 64-bit 下载 安装
- 西门子S7-200PLC和昆仑通泰MCGS触摸屏控制步进伺服电机控制程序
- java计算机毕业设计H5醉美南湾湖网站设计MyBatis+系统+LW文档+源码+调试部署
- 死磕Android_OkHttp3 原理探究