多个异步方法,一个完成处理程序

时间:2017-06-30 21:40:04

标签: ios completion

我有两种异步方法:

- (void)login: (void (^)(BOOL))completion{
    // some network stuff with completion
}

- (void)download: (void (^)(BOOL))completion{
        // some network stuff with completion
    }

对于后台提取,我需要完成两个方法,并且只返回一个完成。

我当然可以嵌套这些方法

 - (void)login: (void (^)(BOOL))completion{
      //....
       [self download:^(BOOL success) {
           //....
                 if (success){
                     completion(true);
                  }
         }];
    }

但是,只要我添加一个或多个需要同时完成的方法,代码就会变得混乱。

我记得我已经阅读了一种方法,你可以在一个线程上对所有这些方法进行分组,但我似乎没有合适的词汇来在SO或其他地方找到它。

我希望你理解我在说什么,并指出我正确的方向。

提前谢谢

2 个答案:

答案 0 :(得分:2)

如果任务确实存在依赖关系,并且您将来可能需要添加更多方法,那么您应该考虑使用NSOperationQueue

答案 1 :(得分:1)

您可以做的是将completion block向下传递给download方法,以便在下载完成后,将链接一直链接到调用方,如下所示:

- (void)login: (void (^)(BOOL))completion{
    // some network stuff with completion
    [self download:completion];
}

- (void)download: (void (^)(BOOL))completion{
    completion(YES);
    // some network stuff with completion
}