注意点:需要将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]);
}];
}];