iOS 前面任务下载完成,执行后续操作。

1.思路:GCD调度组:dispatch_group

- (void)dispatch_group{
    
    NSArray*moviesArray = [NSArray arrayWithObjects:
                          @"第1集", @"第2集",@"第3集",@"第4集",@"第5集",
                          @"第6集",@"第7集",@"第8集",@"第9集",@"第10集",
                          @"第11集", @"第12集",@"第13集",@"第14集",@"第15集",
                          @"第16集",@"第17集",@"第18集",@"第19集",@"第20集",
                          nil];

    dispatch_group_t group = dispatch_group_create();
    //for循环创建任务,加入到group中
    for (int i = 0; i<moviesArray.count; i++) {
        dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
            NSLog(@"%@开始下载",moviesArray[i]);
            sleep(i+1);//假设后集比前集多耗时1秒,即第一集用时1秒,第二集2秒...
            NSLog(@"%@下载完成",moviesArray[i]);
        });
    }

    //group完成
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        NSLog(@"全部任务下载完成");
    });
    
}

或者

- (void)dispatch_group2{
    
    NSArray*moviesArray = [NSArray arrayWithObjects:
                           @"第1集", @"第2集",@"第3集",@"第4集",@"第5集",
                           @"第6集",@"第7集",@"第8集",@"第9集",@"第10集",
                           @"第11集", @"第12集",@"第13集",@"第14集",@"第15集",
                           @"第16集",@"第17集",@"第18集",@"第19集",@"第20集",
                           nil];
    
    dispatch_group_t group = dispatch_group_create();
    
    for (int i = 0; i<moviesArray.count; i++) {
        
        dispatch_group_enter(group);//进入
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            
            NSLog(@"%@开始下载",moviesArray[i]);
            sleep(i+1);//假设后集比前集多耗时1秒,即第一集用时1秒,第二集2秒...
            NSLog(@"%@下载完成",moviesArray[i]);
            
            dispatch_group_leave(group);//抽出
        });
  
    }
    
    //group完成
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        NSLog(@"全部任务下载完成");
    });
    
}

效果一样

GCDGroup.gif

2.概念

GCDGroup概念.png

上图节选自 https://www.jianshu.com/p/324c2fded696 group一节

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容