1

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

例如(出于说明目的) 1. API 调用 A 获取图像 A 2. API 调用 B 获取另一个图像 B 3. maskImage 函数将图像 B 屏蔽到 A

任何见解都会有所帮助!

4

1 回答 1

3

我不确定您认为不适合哪种代码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到您自己的队列中。

于 2013-06-02T06:16:09.380 回答