指定异步任务的依赖关系可以让任务按一定顺序执行。
注意:依赖关系可以跨队列。
例如,下载某文件后解压缩再更新UI,如果直接异步会乱序执行,这不合理,所以指定依赖关系。
范例:
-(void)depend
{
NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{NSLog(@"下载")}];
NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{NSLog(@"解压")}];
NSBlockOperation *op3 = [NSBlockOperation blockOperationWithBlock:^{NSLog(@"更新UI")}];
//指定任务之间的依赖关系
[op2 addDependency:op1];
[op3 addDependency:op2];
//如果最后的参数是NO,那么会不等待上面的任务直接执行最后任务,如果是YES会等待上面执行完毕。
[self.opQueue addOperations:@[op1,op2,op3] waitUntilFinished:YES];
NSLog("最后的任务");
}