在NSOperationQueue中执行具有依赖性的代码片段,而不是使用NSInvocationOperation调用方法

时间:2012-06-27 15:47:40

标签: objective-c nsoperationqueue

我想在NSOperation中按顺序执行代码。 这可以通过实例化NSInvocationOperation轻松完成,例如在我的控制器中:

NSOperationQueue *queue = [NSOperationQueue new];

NSInvocationOperation *prepare = [[NSInvocationOperation alloc] initWithTarget:self 
                                                                      selector:@selector(prepare) 
                                                                        object:nil];

NSInvocationOperation *load = [[NSInvocationOperation alloc] initWithTarget:self 
                                                                selector:@selector(loadData) 
                                                                        object:nil];

[load addDependency:prepare];

这非常有效,而且最重要的是我可以保持操作之间的依赖关系。但正如您所看到的,我必须创建封装操作本身的方法。 我希望将调用实例化为代码片段,并保持依赖性。 因此,我的视图控制器将是干净的,因为从未使用过的方法。

我看到有一个^ block选项,但似乎没有维护依赖。

感谢

1 个答案:

答案 0 :(得分:3)

您应该能够在NSOperation的任何子类中添加依赖项。在您的情况下,您可能需要NSBlockOperation

NSOperation *prepare = [NSBlockOperation blockOperationWithBlock:^{
    // code here
}];

NSOperation *laod = [NSBlockOperation blockOperationWithBlock:^{
    // code here
}];

[load addDependency:prepare];