我有2个AFNetoworking操作来获取数据,我有一个方法需要完成它们。我在互联网上看到我可以有一个NSOperationQueue来做一个操作依赖于另一个操作完成。虽然在某些情况下这似乎是一个很好的解决方案,但如果我的代码不适合作为NSOperation,那似乎很难。
例如(出于说明目的) 1. API调用A获取图像A. 2. API调用B获取另一个图像B. 3. maskImage函数将图像B屏蔽到A
任何见解都会有所帮助!
答案 0 :(得分:3)
我不确定您认为哪种代码不适合NSOperation
,但我想知道您使用NSOperation
的沉默是否源于避免编写自己的代码{ {1}}子类。幸运的是,使用操作队列比这简单得多。您可以使用NSOperation
或NSBlockOperation
快速创建操作。
我通常会使用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
添加到您自己的队列中。