我有兩個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