GCD常用方法

2018-01-05  本文已影响0人  huicuihui

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];
    });
}
上一篇 下一篇

猜你喜欢

热点阅读