NSOperation
2016-01-17 21:12
183 查看
1. NSOperation类是一个抽象类,用来封装单任务的代码和数据。不能直接使用该类,可以使用系统定义的子类(NSInvocationOperation,NSBlockOperation)来完成任务,也可以自定义。需要将NSOperation的子类对象添加到队列中,用NSOperationQueue来实现,
2.NSOperation子类的创建方式
(1)NSInvocationOperatin创建
NSInvocationOperation *operation = [NSInvocationOperation alloc]initWithTarget:<#(nonnull id)#> selector:<#(nonnull SEL)#> object:<#(nullable id)#>];
(2)NSBlockOperation创建
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
<#code#>
}];
(3)子类化创建
① 创建NSOperation的类
② 覆写main方法
③ 初始化子类
3. 队列的创建
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
4. 添加任务到任务队列
(1)[queue addOperation:<#(nonnull NSOperation *)#>]; //添加单个任务
(2)[queue addOperations:<#(nonnull NSArray<NSOperation *> *)#> waitUntilFinished:<#(BOOL)#>]; //添加多个任务,并且设置是否等待任务完成
(3)[queue addOperationWithBlock:^{
<#code#>
}]; //隐式添加
5.设置依赖需在添加到队列之前,添加依赖成功的前提是必须添加到队列中
[operation addDependency:<#(nonnull NSOperation *)#>]; operation与添加的队列是同步的,需等待添加的队列执行完后再执行operation
6. 设置队列的优先级
[operation setQueuePriority:<#(NSOperationQueuePriority)#>];
队列的级别设置
NSOperationQueuePriorityVeryLow
NSOperationQueuePriorityLow
NSOperationQueuePriorityNormal
NSOperationQueuePriorityHigh
NSOperationQueuePriorityVeryHigh
7.设置最大并发数
[queue setMaxConcurrentOperationCount:<#(NSInteger)#>];
8.取消任务 (正在执行的任务无法取消)
[operation cancel]; //取消单个任务
[queue cancelAllOperations]; //取消全部任务
9. 阻塞线程
[operation waitUntilFinished];
10.暂停和重启任务
[queue setSuspended:YES]; //暂停任务
[queue setSuspended:NO]; //重启任务
2.NSOperation子类的创建方式
(1)NSInvocationOperatin创建
NSInvocationOperation *operation = [NSInvocationOperation alloc]initWithTarget:<#(nonnull id)#> selector:<#(nonnull SEL)#> object:<#(nullable id)#>];
(2)NSBlockOperation创建
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
<#code#>
}];
(3)子类化创建
① 创建NSOperation的类
② 覆写main方法
③ 初始化子类
3. 队列的创建
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
4. 添加任务到任务队列
(1)[queue addOperation:<#(nonnull NSOperation *)#>]; //添加单个任务
(2)[queue addOperations:<#(nonnull NSArray<NSOperation *> *)#> waitUntilFinished:<#(BOOL)#>]; //添加多个任务,并且设置是否等待任务完成
(3)[queue addOperationWithBlock:^{
<#code#>
}]; //隐式添加
5.设置依赖需在添加到队列之前,添加依赖成功的前提是必须添加到队列中
[operation addDependency:<#(nonnull NSOperation *)#>]; operation与添加的队列是同步的,需等待添加的队列执行完后再执行operation
6. 设置队列的优先级
[operation setQueuePriority:<#(NSOperationQueuePriority)#>];
队列的级别设置
NSOperationQueuePriorityVeryLow
NSOperationQueuePriorityLow
NSOperationQueuePriorityNormal
NSOperationQueuePriorityHigh
NSOperationQueuePriorityVeryHigh
7.设置最大并发数
[queue setMaxConcurrentOperationCount:<#(NSInteger)#>];
8.取消任务 (正在执行的任务无法取消)
[operation cancel]; //取消单个任务
[queue cancelAllOperations]; //取消全部任务
9. 阻塞线程
[operation waitUntilFinished];
10.暂停和重启任务
[queue setSuspended:YES]; //暂停任务
[queue setSuspended:NO]; //重启任务
相关文章推荐
- nginx中常见的变量
- 【转】centos7安装
- OpenSceneGraphic 着色器中数组的应用
- linux搭建ntp服务
- nginx同时监听本机ipv4/ipv6端口
- 设置Hadoop+Hbase集群pid文件存储位置
- Project Euler 101 :Optimum polynomial 最优多项式
- 嵌入式Linux研发,非常值得研究的几个开源项目
- Linux(Ubuntu)环境下使用Fiddler
- 博主常用(推荐)网站,持续更新中
- 【Linux】新建用户、用户组以及为新用户分配权限
- 记录参加“牛津计划.Docker在线黑客松”比赛的过程
- Mac下Apache服务器配置
- Linux学习笔记:MySQL字符集
- Linux学习笔记:创建用户与授权
- Linux学习笔记:挂载点的选项noexec
- 【linux】500 OOPS:cannot change directory:/root
- nginx性能优化
- Linux内核构建系统之十
- Linux内核构建系统之九