Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何执行需要完成两个异步任务的操作_Ios_Afnetworking_Nsoperation_Nsoperationqueue_Gdc - Fatal编程技术网

Ios 如何执行需要完成两个异步任务的操作

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>,但我想知道

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

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


任何见解都会有帮助

> 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看起来很棒,但不知道它的存在。