标签:
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]; //重启任务
标签:
原文地址:http://www.cnblogs.com/xiaojiang-123/p/5137828.html