我有 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到您自己的队列中。