我有 2 个 AFNetoworking 操作来获取我的数据,并且我有一个方法需要完成它们。我在互联网上读过我可以有一个 NSOperationQueue 来使 1 个操作依赖于另一个操作完成。虽然在某些情况下这似乎是一个很好的解决方案,但如果我有不适合作为 NSOperation 的代码似乎会很困难。
例如(出于说明目的) 1. API 调用 A 获取图像 A 2. API 调用 B 获取另一个图像 B 3. maskImage 函数将图像 B 屏蔽到 A
任何见解都会有所帮助!
我有 2 个 AFNetoworking 操作来获取我的数据,并且我有一个方法需要完成它们。我在互联网上读过我可以有一个 NSOperationQueue 来使 1 个操作依赖于另一个操作完成。虽然在某些情况下这似乎是一个很好的解决方案,但如果我有不适合作为 NSOperation 的代码似乎会很困难。
例如(出于说明目的) 1. API 调用 A 获取图像 A 2. API 调用 B 获取另一个图像 B 3. 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
到您自己的队列中。