1、延迟做某些任务
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
<#code to be executed after a specified delay#>
});
2、多个任务同时进行,等任务全部完成之后去进行下一步操作。
例如:下面的为网络刷新数据, 但是刷新的数据由两部分两个接口组成,都需要刷新,等两个网络请求都完成之后,去刷新UI界面。
- (void)loadNewData
{
dispatch_group_t requestGroup = dispatch_group_create();
dispatch_group_enter(requestGroup);
[[LemonModelManager shareLemonModelManager] fetchTopNews:[FuData getTodayDate] fromDate:nil isPull:YES tempData:nil DataArray:^(BOOL isSuccess, NSArray *array, NSString *error) {
dispatch_group_leave(requestGroup);
}];
dispatch_group_enter(requestGroup);
[self fetchTopNewsWithType:@"1010" netResultBlock:^(BOOL isSuccess, NSArray *array, NSString *error) {
dispatch_group_leave(requestGroup);
}];
dispatch_group_notify(requestGroup, dispatch_get_main_queue(), ^{
[self.tableView.mj_header endRefreshing];
[self.tableView reloadData];
});
}
网友评论