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



我有2个afnetwork操作获取我的数据,我有一个方法,需要他们两个完成。我在互联网上读过,我可以有一个NSOperationQueue使1个操作依赖于另一个操作完成。虽然在某些情况下这似乎是一个很好的解决方案,但如果我的代码不适合作为NSOperation,这似乎会很困难。

例如(为了说明目的)1. API调用A获取图像A2. API调用B得到另一个图像B3.maskImage函数将图像B遮罩到图像A上

任何见解都会有所帮助!

我不确定您认为不适合NSOperation的代码类型,但我想知道您对使用NSOperation的沉默是否源于避免编写自己的NSOperation子类的愿望。幸运的是,使用操作队列要简单得多。您可以使用NSBlockOperationNSInvocationOperation快速创建操作。

我一般会使用NSBlockOperation:

NSOperation *completionOperation = [NSBlockOperation blockOperationWithBlock:^{
    // do my image processing
    [self applyMaskToImage];
}];

或者你可以使用NSInvocationOperation:

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

你可以(a)调用addDependency为你的两个下载操作,使completionOperation依赖于这两个;(b)将completionOperation添加到您自己的队列中。

相关内容

  • 没有找到相关文章

最新更新