NSOperation-分组操作,等待所有操作完成

时间:2018-08-23 09:16:24

标签: ios objective-c nsoperationqueue nsoperation

我有一个NSOperation和NSOperationQueue对象的子类。我的操作看起来一样,我将所有操作都添加到OperationQueue中,并在完成每个操作后执行完成块。但是某些操作是一个业务组的成员,并且该组可以同时在队列中执行。我需要等待,直到每个小组完成,并且在每个小组完成之后执行完成块。但是我不想阻止组或一个接一个地运行。如何使用NSOperation或在其他方法的帮助下制作此变体。

1 个答案:

答案 0 :(得分:1)

添加一个取决于您每个操作的操作,然后等待所有操作完成

    NSOperationQueue* queue = [NSOperationQueue new];

NSOperation* finalOperation = [NSBlockOperation blockOperationWithBlock:^{
    NSLog(@"ALL IS DONE!");
}];

for (NSUInteger i = 0; i < 10; i++) {
    NSOperation* op = [NSBlockOperation blockOperationWithBlock:^{
            NSLog(@"%zd", i);
    }];
    [finalOperation addDependency:op];
    [queue addOperation:op];
}
 [queue addOperation:finalOperation];

Output: 
0
2
3
1
5
4
6
7
8
9
ALL IS DONE!