如何执行需要完成2个异步任务的操作

时间:2013-06-02 04:52:52

标签: ios afnetworking nsoperation nsoperationqueue gdc

我有2个AFNetoworking操作来获取数据,我有一个方法需要完成它们。我在互联网上看到我可以有一个NSOperationQueue来做一个操作依赖于另一个操作完成。虽然在某些情况下这似乎是一个很好的解决方案,但如果我的代码不适合作为NSOperation,那似乎很难。

例如(出于说明目的) 1. API调用A获取图像A. 2. API调用B获取另一个图像B. 3. maskImage函数将图像B屏蔽到A

任何见解都会有所帮助!

1 个答案:

答案 0 :(得分:3)

我不确定您认为哪种代码不适合NSOperation,但我想知道您使用NSOperation的沉默是否源于避免编写自己的代码{ {1}}子类。幸运的是,使用操作队列比这简单得多。您可以使用NSOperationNSBlockOperation快速创建操作。

我通常会使用NSInvocationOperation

NSBlockOperation

或者您可以使用NSOperation *completionOperation = [NSBlockOperation blockOperationWithBlock:^{ // do my image processing [self applyMaskToImage]; }];

NSInvocationOperation

然后,您可以(a)为您的两个下载操作中的每一个调用NSOperation *completionOperation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(applyMaskToImage) object:nil]; ,以使addDependency依赖于两者; (b)将completionOperation添加到您自己的队列中。