我有两个NSOperation
对象“A”和“B”,并且想要使用依赖关系,因为我需要首先完成“B”,然后启动“A”。“addDependency”在iOS中无法正常工作
- (void)viewDidLoad {
[super viewDidLoad];
NSOperationQueue *myQueue = [NSOperationQueue new];
NSOperation *op1 = [[NSOperation alloc] init]; // Its a background(concurrent) thread.
op1.completionBlock =^{
NSLog(@"A");
};
NSOperation *op2 = [[NSOperation alloc] init];
op2.completionBlock =^{
NSLog(@"B");
};
[op1 addDependency:op2];
[myQueue addOperation:op1];
[myQueue addOperation:op2];
}
预期输出:
B
A
但有时:
A
B
但我想完成第一次B,然后需要开始答:请帮我就可以了。
你能展示如何调用这段代码吗?它是否被连续调用,就像在循环中一样? – danh
@danh,不在循环中。我只是放在“viewDidLoad”方法中。 –
我明白了。这吹了我的理论。你有办法可靠地重现乱序行为吗?只是为了好玩,你可以添加'[myQueue waitUntilAllOperationsAreFinished];' – danh