2个NSOperation对象的联合

问题描述:

我正在寻找允许同时处理2个线程(NSOperations)的模式,并且只有在两者都完成后才返回。使这变得复杂,我需要这些双重操作的队列。2个NSOperation对象的联合

所以,我的想法是有一个NSOperation包含一个NSOperationQueue来处理两者。然后NSOperation队列将同时执行两次,当队列为空时提醒我,并且我们可以继续前进。

寻找周围的想法,或更好的方式来完成这项任务/上述的陷阱。

在此先感谢!

罗布

您可以使用NSOperation的依赖性支持来处理这个。基本上你创建运行要当第2个操作完成运行的代码第三操作,那么前两个操作的依赖增加了第三次手术,并添加他们都到队列:

NSOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{ 
    NSLog(@"op1!"); 
}]; 

NSOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{ 
    NSLog(@"op2!"); 
}]; 

NSOperation *completionOp = [NSBlockOperation blockOperationWithBlock:^{ 
    NSLog(@"op1 and op2 are complete!"); 
}]; 

[completionOp addDependency:op1]; 
[completionOp addDependency:op2]; 

NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
[queue addOperation:completionOp]; 
[queue addOperation:op1]; 
[queue addOperation:op2]; 

其输出:

op1! 
op2! 
op1 and op2 are complete! 

需要注意的是,即使是completionBlock添加到队列第一,这是因为它有op1op2依赖的运行最后。

+0

正是我在找什么!!!! – 2014-11-03 12:00:48