版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1337730
注意点:需要将operation对象添加到队列中。代码:
NSOperationQueue * queue = [NSOperationQueue alloc init];
NSBlockOperation * o1 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"1---%@", NSThread currentThread);
NSLog(@"1.1---%@", NSThread currentThread);
NSLog(@"1.2---%@", NSThread currentThread);
NSLog(@"1.3---%@", NSThread currentThread);
NSLog(@"1.4---%@", NSThread currentThread);
}];
NSBlockOperation * o2 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"2---%@", NSThread currentThread);
}];
NSBlockOperation * o3 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"3---%@", NSThread currentThread);
}];
o3 addDependency:o1; // 线程依赖
o3 addDependency:o2; // 线程间不能相互依赖
NSMutableArray * arr = NSMutableArray array;
arr addObject:o1;
arr addObject:o2;
arr addObject:o3;
// queue addOperations:arr waitUntilFinished:YES;
queue addOperation:o1;
queue addOperation:o2;
queue addOperation:o3;
NSLog(@"======================");
// 如何监听所有的任务全部完成
[queue addOperationWithBlock:^{
NSLog(@"子线程%@", NSThread currentThread);
// 回到主线程
[NSOperationQueue mainQueue addOperationWithBlock:^{
NSLog(@"回到主线程%@", NSThread currentThread);
}];
}];