我有2个afnetwork操作获取我的数据,我有一个方法,需要他们两个完成。我在互联网上读过,我可以有一个NSOperationQueue使1个操作依赖于另一个操作完成。虽然在某些情况下这似乎是一个很好的解决方案,但如果我的代码不适合作为NSOperation,这似乎会很困难。
例如(为了说明目的)1. API调用A获取图像A2. API调用B得到另一个图像B3.maskImage函数将图像B遮罩到图像A上
任何见解都会有所帮助!
我不确定您认为不适合NSOperation
的代码类型,但我想知道您对使用NSOperation
的沉默是否源于避免编写自己的NSOperation
子类的愿望。幸运的是,使用操作队列要简单得多。您可以使用NSBlockOperation
或NSInvocationOperation
快速创建操作。
我一般会使用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
添加到您自己的队列中。