GCD使用场景之一

最近项目遇到个问题,有个界面数据由多个接口来提供,使用MJRefresh刷新时候出了遇到了问题,不知道该何时结束刷新。。。
开始想在每个请求的block中加个值判断,然后处理刷新,尼玛要是有100个接口这得写100遍啊,,,烦
翻了以下资料发现了强大的GCD帮我解决了问题~

以下下是部分代码:

    dispatch_group_t group = dispatch_group_create();
    
    //获取推荐计划
    dispatch_group_enter(group);
    [PXBEngine getRecommandWithID:@"" Success:^(NSDictionary *dict) {
        NSLog(@"get recommand project success");
        dispatch_group_leave(group);
    } failure:^(NSError *error) {
        dispatch_group_leave(group);
    }];
    //获取最新三条项目
    dispatch_group_enter(group);
    [PXBEngine getLatestProjectSuccess:^(NSDictionary *dict) {
        NSLog(@"get latest project success");
        dispatch_group_leave(group);
    } failure:^(NSError *error) {
        dispatch_group_leave(group);
    }];
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        [self reloadData];
        [self.mj_header endRefreshing];
        NSLog(@"tableView reloadData success");
    });

少些好多代码,哈哈哈

看完上面这个再讲一个偷懒的经历,
由于我的项目首页展示了很多内容,所以隐藏了首页导航栏。
但是跳转到其他页面时候要显示导航栏,所以要在每个跳转页面加上这么一段代码:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.navigationController.navigationBar.hidden = NO;
}

首页跳转的页面有十几个,这要复制粘贴十几遍啊,大写的烦!
本想去看看能不能在push pop的时候搞点事情,无意中发现了这个

// Called when the navigation controller shows a new top view controller via a push, pop or setting of the view controller stack.
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated;

试着用了一下,正是我想要的结果,哈哈

你可能感兴趣的:(GCD使用场景之一)