I have 2 AFNetoworking operations fetching me data, and i have a method that requires both of them to be completed. I've read on the internet i could have an NSOperationQueue to make 1 operation dependent on another operation finishing. While this seems like a good solution in some cases, it seems like it would be difficult if I have code that isnt suited to be an NSOperation.
For example (for illustration purposes) 1. API call A gets an image A 2. API call B gets another image B 3. the maskImage function masks image B onto A
any insights would be helpful!
I'm not sure about what sort of code you consider ill-suited for NSOperation
, but I'm wondering if your reticence to use NSOperation
stems from a desire to avoid writing your own NSOperation
subclass. Fortunately, using operation queues is much simpler than that. You can use NSBlockOperation
or NSInvocationOperation
to quickly create operations.
I would generally use a NSBlockOperation
:
NSOperation *completionOperation = [NSBlockOperation blockOperationWithBlock:^{
// do my image processing
[self applyMaskToImage];
}];
Or you could use a NSInvocationOperation
:
NSOperation *completionOperation = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(applyMaskToImage)
object:nil];
You can then (a) call addDependency
for each of your two download operations, to make completionOperation
dependent upon both; and (b) add the completionOperation
to your own queue.