iOS检测何时完全执行2个块

时间:2016-02-16 01:59:55

标签: ios objective-c-blocks

我有2个块用于从服务器获取数据。当2个块开始执行时,我显示一个加载对话框,然后当2个块完成时我将隐藏它。

//  Show loading dialog
// Block 1
    [[DataCenter shareInstance] getGenresListWithCallback:^(id result, id error) {

    }];
// Block 2    
    [[DataCenter shareInstance] getJobsListWithUserType:user.type callback:^(id result, id error){

    }];

如何检测何时完全执行2个块?

1 个答案:

答案 0 :(得分:1)

有多种方法可以做到这一点。这是一个:

创建原子整数属性taskCount。在添加每个获取作业时,请增加taskCount。在每个完成块中,减少self.taskCount。当它达到0时,你就完成了。请注意,您需要在开始时一次性提交所有作业,否则在提交所有作业之前,您将面临其中一部分作业完成的风险。

您还可以将所有作业提交到GCD调度队列,并使用调度组来检测它们何时完成,但这将涉及重构代码。