博客> NSOperationQueue的用法
NSOperationQueue的用法
1小时前 评论:0 阅读:17 进击的可乐SAMA


NSOperationQueue的队列类型
1.主队列:[NSOperationQueue mainQueue];
凡是添加到主队列中的任务,都会放到主线程中执行。
2.其他队列(串行、并发):[[NSOperationQueue alloc] init]
添加到这种队列中的任务,就会自动放到子线程中执行

基本用法


//创建队列
NSOperationQueue * queue = [[NSOperationQueue alloc] init];

//设置最大并发操作数(如果设置为1则变成了串行队列)
queue.maxConcurrentOperationCount = 并发数;

//让队列执行或者挂起(暂停),任务执行一半的时候不会暂停
queue.suspended = NO;
/*
    NO:执行
    YES:暂停
*/

//创建操作(任务)
NSInvocationOperation * op1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(方法名)     object:参数];

NSBlockOperation * op2 = [NSBlockOperation blockOperationWithBlock:^{

}];

//添加任务到队列中
[queue addOperation:op1];
[queue addOperation:op2];
[queue addOperationWithBlock:^{
    //任务内容
}]

//将所有任务都取消
[queue cancelAllOperations];

//回到主线程
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
    //主线程任务
}];


操作依赖


//创建队列
NSOperationQueue * queue = [[NSOperationQueue alloc] init];

//创建任务
NSBlockOperation * op1 = [NSBlockOperation blockOperationWithBlock:^{
    //任务
}];
NSBlockOperation * op2 = [NSBlockOperation blockOperationWithBlock:^{
    //任务
}];
NSBlockOperation * op3 = [NSBlockOperation blockOperationWithBlock:^{
    //任务
}];

//设置依赖
[op3 addDependency:op1];
[op3 addDependency:op2];
//这样可以让op3在op1和op2执行完毕以后才执行

[queue addOperation:op1];
[queue addOperation:op2];
[queue addOperation:op3];
收藏
0
sina weixin mail 回到顶部