swift

利用dispatch_group_create函数解决相关问题(

2019-08-16  本文已影响0人  布呐呐u

1)问题描述

有些时候,在项目中会出现如下场景,
常见的就是网络异步请求相关。
例如:A、B、C三个请求,
ABC都完成,并且成功再执行下一个动作。

2)解决方案

利用GCD中的dispatch_group_create函数解决问题
{
      //①创建一个group
      dispatch_group_t group = dispatch_group_create();
      //②等待网络请求A返回数据
      dispatch_group_enter(group);
        {
            //Method,A经过一系列的方法下载完成
            [self  download];
            dispatch_group_leave(group);
        }
      //③等待网络请求B返回数据
      dispatch_group_enter(group);
        {
            //Method,B经过一系列的方法下载完成
            [self  download];
            dispatch_group_leave(group);
        }
      //④等待网络请求C返回数据
      dispatch_group_enter(group);
        {
            //Method,C经过一系列的方法下载完成
            [self  download];
            dispatch_group_leave(group);
        }
      //⑤A、B、C全部完成,通知group可以执行下一步操作;
      dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        //执行下一步操作 to do
       }

    //dispatch_group_enter(group);
    //dispatch_group_leave(group);
    //注:这两个函数是成对出现的,
      1)enter函数大于leave,说明某个下载未完成,不能执行dispatch_group_notify函数;
      2)leave函数大于enter,程序会崩溃。
      3)故,使用的时候要细心,多加小心!
 }
上一篇 下一篇

猜你喜欢

热点阅读