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;

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容