Ios 如何执行需要完成两个异步任务的操作
我有两个AFNetoworking操作来获取我的数据,我有一个方法需要完成这两个操作。我在互联网上读到,我可以使用NSOperationQueue使一个操作依赖于另一个操作完成。虽然在某些情况下这似乎是一个很好的解决方案,但如果我有不适合作为NSO操作的代码,这似乎会很困难 例如(用于说明) 1.API调用A获取图像A 2.API调用B获取另一个映像B 3.maskImage函数将图像B屏蔽到A上Ios 如何执行需要完成两个异步任务的操作,ios,afnetworking,nsoperation,nsoperationqueue,gdc,Ios,Afnetworking,Nsoperation,Nsoperationqueue,Gdc,我有两个AFNetoworking操作来获取我的数据,我有一个方法需要完成这两个操作。我在互联网上读到,我可以使用NSOperationQueue使一个操作依赖于另一个操作完成。虽然在某些情况下这似乎是一个很好的解决方案,但如果我有不适合作为NSO操作的代码,这似乎会很困难 例如(用于说明) 1.API调用A获取图像A 2.API调用B获取另一个映像B 3.maskImage函数将图像B屏蔽到A上 任何见解都会有帮助 > P>我不确定您认为什么代码不适合 NStase< /Cord>,但我想知道
任何见解都会有帮助 > P>我不确定您认为什么代码不适合<代码> NStase< /Cord>,但我想知道您是否使用<代码> NScase是出于避免编写自己的<代码> NStase< /Cord>子类的愿望。幸运的是,使用操作队列要简单得多。您可以使用
NSBlockOperation
或NSInvocationOperation
快速创建操作
我通常会使用NSBlockOperation
:
NSOperation *completionOperation = [NSBlockOperation blockOperationWithBlock:^{
// do my image processing
[self applyMaskToImage];
}];
NSOperation *completionOperation = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(applyMaskToImage)
object:nil];
或者您可以使用NSInvocationOperation
:
NSOperation *completionOperation = [NSBlockOperation blockOperationWithBlock:^{
// do my image processing
[self applyMaskToImage];
}];
NSOperation *completionOperation = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(applyMaskToImage)
object:nil];
然后,您可以(a)为两个下载操作中的每一个调用
addDependency
,使completionOperation
依赖于这两个操作;(b)将completionOperation
添加到您自己的队列中。为什么您说您的代码不适合NSO操作?还有,你不是把事情复杂化了吗?仅仅几个标志就足够了,不是吗?为什么这不适合于NSOperation
?我只需要做一个简单的NSOperation*completionOperation=[NSBlockOperation operationWithBlock:^{…}]然后将依赖项添加到该操作中。这看起来非常适合NSOperation
(您当然不想在主队列上执行复杂的图像处理)。@Rob NSBlockOperation看起来很棒,但不知道它的存在。