1.用到的几个方法
-
通知 group,下个任务要放入 group 中执行
dispatch_group_enter
-
通知 group,任务成功完成,要移除,与 enter成对出现
dispatch_group_leave:
-
在任务组完成时调用,或者任务组超时是调用(完成指的是enter和leave次数一样多)
dispatch_group_wait
-
只要任务全部完成了,就会在最后调用
dispatch_group_notify
2.开启子线程的线程组
线程1
dispatch_group_t groupE = dispatch_group_create(); //模拟网络请求1 dispatch_group_enter(groupE); NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; //普通的afn 请求 [HttpHelperClient postReqeustWithURL:@"www.baidu.com"params:dicsuccessBlock:^(NSDictionary*returnDataDic) { NSLog(@"接口11请求完成"); dispatch_group_leave(groupE); }failureBlock:^(NSError*error) { }showHUD:NO getOrPost:2];
线程2
//模拟网络请求2 dispatch_group_enter(groupE); NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; [HttpHelperClientpostReqeustWithURL:@"www.baidu.com"params:dicsuccessBlock:^(NSDictionary*returnDataDic) { NSLog(@"接口12请求完成"); dispatch_group_leave(groupE); }failureBlock:^(NSError*error) { }showHUD:NO getOrPost:2];
线程3
//模拟网络请求3 dispatch_group_enter(groupE); NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; [HttpHelperClientpostReqeustWithURL:@"www.baidu.com"params:dicsuccessBlock:^(NSDictionary*returnDataDic) { NSLog(@"接口13请求完成"); dispatch_group_leave(groupE); }failureBlock:^(NSError*error) { }showHUD:NO getOrPost:2];
End:所有请求都成功以后刷新页面
//所有请求都成功以后刷新页面 dispatch_group_notify(groupE, dispatch_get_main_queue(), ^{ NSLog(@"接口全部请求完成");//刷新页面 });
网友评论