GCD group在多个网络请求的响应以前就已经执行

使用GCD进行多文件下载时,咱们能够很方便的使用dispatch_group进行管理。可是碰到网络请求都发出去了,想等到他们都响应,在执行下一步操做,有时候会惊奇的发现dispatch_group_notify()居然在网络相应以前就已经“干净利落”的完成了,不是咱们想要的。不要急,由于你的思路跑偏了,换个方向,用json

dispatch_group_enter(group);//放入group网络

dispatch_group_async(,^{async

    //执行的任务
post

});url

dispatch_group_leave(group);//离开groupspa


就像这样一个结构,将一个一个的“请求+响应”做为一个总体,压入group里,3d


//这里无非就是建立组grouporm

dispatch_group_enter(group);get

[BNNetTools post:url params:parma success:^(id json) {it

    //完成操做。。。

    dispatch_group_leave(group);

 } failure:^(NSError *error) {

    //完成操做。。。

    dispatch_group_leave(group);

}];

//也能够这样写

dispatch_group_enter(group);

[BNNetTools post:url params:parma success:^(id json) {

    //完成操做。。。

    

 } failure:^(NSError *error) {

    //完成操做。。。

    

}];

dispatch_group_leave(group);

//或者这样写

dispatch_group_enter(group);//放入group

dispatch_group_async(,^{

    //执行的任务

    

    [BNNetTools post:url params:parma success:^(id json) {

        //完成操做。。。

        dispatch_async(dispatch_get_main_queue(), ^{

            //刷新UI

        });

     } failure:^(NSError *error) {

        //完成操做。。。

        

        dispatch_async(dispatch_get_main_queue(), ^{

            //刷新UI

        });


    }];


});

dispatch_group_leave(group);//离开group

最后,别忘了,你要的得到他们都结束————dispatch_group_notify();

相关文章
相关标签/搜索