iOS依次执行方法

标签 ios objective-c nsoperationqueue

我知道已经有人问过这个类似的问题,但我的问题甚至是将 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/

相关文章:

iphone - 检查两个 NSOperationQueue 何时完成调用 endBackgroundTask 以停止后台任务模式

ios - NSOperationQueue addOperations waitUntilFinished

ios - 为什么这些约束在 iPad 9.7"and 12.9"上不能正常工作?

ios - 如何使用催化剂在 ios 和 macos 中弹出文档选择器

ios - 如何将三个标签添加到导航栏?

javascript - Cordova如何旋转相机中的图片

iphone - 在 iOS 中解析 Intuit XML 响应

ios - 如何使用手势

ios - 基于核心数据对象,仅选择带有复选标记的一行

iphone - setDelegate Queue 在 iOS5 上不起作用,但在 iOS 6 上运行良好