NSOperation - 分组操作并等待所有操作完成
NSOperation - Group operations and wait until all of them are finished
我有一个 NSOperation 和 NSOperationQueue 对象的子类。我的操作看起来一样,我将所有操作添加到 OperationQueue 中,并在完成每个操作后执行完成块。但是有些操作是一个业务组的成员,这个组可能同时在队列中执行。我需要等待,直到每组完成并在每组完成后执行完成块。但是我不想一个接一个地屏蔽群或者运行。我如何使用 NSOperation 或在其他方法的帮助下制作此变体。
添加一个依赖于您的每个操作的操作并等待所有操作完成
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!
我有一个 NSOperation 和 NSOperationQueue 对象的子类。我的操作看起来一样,我将所有操作添加到 OperationQueue 中,并在完成每个操作后执行完成块。但是有些操作是一个业务组的成员,这个组可能同时在队列中执行。我需要等待,直到每组完成并在每组完成后执行完成块。但是我不想一个接一个地屏蔽群或者运行。我如何使用 NSOperation 或在其他方法的帮助下制作此变体。
添加一个依赖于您的每个操作的操作并等待所有操作完成
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!