我知道已经有人问过这个类似的问题,但我的问题甚至是将 NSOperationQueue 与
一起使用 NSOperationQueue *aQueue = [[NSOperationQueue alloc] init];
[aQueue setMaxConcurrentOperationCount:1];
那么即使是方法也不会按照 FIFO 的顺序执行。
方法 A(耗时 5 秒)-> 方法 B(耗时 2 秒)-> 方法 C(耗时 1 秒)。
如果我将它们放入 NSOperationQueue 即
[aQueue addOperationWithBlock:^{
[self MethodA];
}];
[aQueue addOperationWithBlock:^{
[self MethodB];
}];
[aQueue addOperationWithBlock:^{
[self MethodC];
}];
方法C先执行然后A再B
我希望它们按照输入的顺序执行。 方法A->方法B->方法c
最佳答案
一个选项确实会像 Fonix 所说的那样使用依赖关系:MethodA 依赖于 MethodB,而 MethodB 又依赖于 MethodC。
只需在 NSOperation
或方法 addDependency:
中使用 dependencies
属性(NSOperations
的数组)。
但是,既然您已经在使用 block ,为什么不使用 GCD
:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self methodA];
[self methodB];
[self methodC];
});
关于iOS依次执行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26357279/