我想运行一些操作任务,完成 继续 -
例如,我希望执行getSomethingsWithResultWithCompletion
方法3次作为序列化任务(如op1依赖op2,...依赖操作N):
[MFLayer getSomethingsWithResultWithCompletion:^(id _Nullable response)Completion {
// it will be run on another thread!**
[MFRequestManager retrivesomeDataWithCompletion:^(id _Nullable response1) {
// it will be run on another thread!**
[MFRequestManager retriveAnothersomeDataWithInfo:response1 WithCompletion:^(id _Nullable response2) {
NSLog(@"Finished with Result : %@",response2);
}];
}];
}];
问题
如果retrive methods
在另一个线程中执行(比如使用AFNetworking发送请求),我遇到序列化问题,另一个任务将启动。
我尝试使用NSOperationQueue和Semaphore但仍有问题
我已经使用NSOperationQueue
和NSOperation
实现了类似的功能,但是它们的实现在同一个线程上运行,因此所有任务都按顺序启动,以便它可以正常工作。
operationQueueExample
答案 0 :(得分:1)
我强烈反对这种方法,但如果你在后台线程上发送任务,你可以使用GCD信号量。
if {@finalvalues}=1
then true
else false
答案 1 :(得分:-1)
你不能挥动魔杖。如果getSomethingsWithResultWithCompletion
不是您的方法,则无法说明其完成处理程序在哪个线程上运行。最简单的方法是在第一个方法的完成处理程序中调用第二个方法。