我有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个块?
答案 0 :(得分:1)
有多种方法可以做到这一点。这是一个:
创建原子整数属性taskCount。在添加每个获取作业时,请增加taskCount。在每个完成块中,减少self.taskCount。当它达到0时,你就完成了。请注意,您需要在开始时一次性提交所有作业,否则在提交所有作业之前,您将面临其中一部分作业完成的风险。
您还可以将所有作业提交到GCD调度队列,并使用调度组来检测它们何时完成,但这将涉及重构代码。