美文网首页
iOS dispatch_group_t 用法

iOS dispatch_group_t 用法

作者: 周无恋 | 来源:发表于2016-06-06 10:07 被阅读0次

    相比于单一界面而言,往往我们只需要调用单个接口获取数据展示,但是当数据量很大,或者当多个模块掺杂的情况下,我们往往需要调用多个接口来获取数据,按照串行来说,会造成界面卡顿,造成用户体验差,而当我们开始使用group时,会大大提升页面速度.

    例如:某个界面我需要调用4个接口来获取数据

    [self getUrl:APIURL_IndexBanner parm:nil completed:^(NSDictionary *json) {
            };
        } failure:^(NSError *error) {
        } showHud:NO];
        
    //  下面的图片列表
        [self getUrl:APIURL_IndexImages parm:nil completed:^(NSDictionary *json) {
        } failure:^(NSError *error) {
        } showHud:NO];
    //    最新动态  最新投资
        [self getUrl:APIURL_IndexLatest parm:nil completed:^(NSDictionary *json) {
       
        }failure:^(NSError *error) {
        } showHud:NO];
    //  特权标
      
        [self getUrl:APIURL_IndexSpecial parm:nil completed:^(NSDictionary *json) {
            
        } failure:^(NSError *error) {
        } showHud:NO];
    

    不用我说, 大家觉得会不会慢?

    dispatch_group_t group = dispatch_group_create();
        dispatch_group_enter(group);
        dispatch_group_enter(group);
        dispatch_group_enter(group);
        dispatch_group_enter(group);
    //    广告
        [self getUrl:APIURL_IndexBanner parm:nil completed:^(NSDictionary *json) {
              dispatch_group_leave(group);
            };
        } failure:^(NSError *error) {
              dispatch_group_leave(group);
        } showHud:NO];
        
    //  下面的图片列表
        [self getUrl:APIURL_IndexImages parm:nil completed:^(NSDictionary *json) {
              dispatch_group_leave(group);
        } failure:^(NSError *error) {
            dispatch_group_leave(group);
        } showHud:NO];
    //    最新动态  最新投资
        [self getUrl:APIURL_IndexLatest parm:nil completed:^(NSDictionary *json) {
            dispatch_group_leave(group);
        }failure:^(NSError *error) {
            dispatch_group_leave(group);
        } showHud:NO];
    //  特权标
      
        [self getUrl:APIURL_IndexSpecial parm:nil completed:^(NSDictionary *json) {
            dispatch_group_leave(group);
        } failure:^(NSError *error) {
            dispatch_group_leave(group);
        } showHud:NO];
        
        [self loadInvestCount:group];
    

    值得一提的是,dispatch_group_enter 与 dispatch_group_leave 必须配套使用,一进一出

    相关文章

      网友评论

          本文标题:iOS dispatch_group_t 用法

          本文链接:https://www.haomeiwen.com/subject/kpwrdttx.html