iOS开发/GCD的使用场景/同一页面发起多个网络请求/同步刷新界面UI

项目中偶尔会遇到在一个控制器需要发起多个网络请求,拿到数据后再去刷新UI界面。那么在这样的情况下GCD派上用场了。

demo中,用sleep(),模拟网络请求时差,NSLog打印,以达到演示目的。


image.png
//
//  ViewController.m
//  dispatch_group_Demo
//
//  Created by GrabinWong on 2017/12/6.
//  Copyright © 2017年 GrabinWong. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self startTask];
}

- (void)startTask
{
    NSLog(@"test..");
    sleep(5);
    dispatch_group_t group = dispatch_group_create();
    dispatch_group_enter(group);
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        [self startFirstTask];
        dispatch_group_leave(group);
    });
    
    dispatch_group_enter(group);
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        [self startSecondTask];
        dispatch_group_leave(group);
    });
    
    dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
        NSLog(@"所有任务都完成了");
    });
}

- (void)startFirstTask
{
    NSLog(@"假装是个网络请求任务一开始!");
    sleep(6);
    for (int i = 1 ; i <= 6; i++) {
        NSLog(@"任务一正在进行中...%d..",i);
    }
    NSLog(@"任务一完成");
}

- (void)startSecondTask
{
    NSLog(@"假装是个网络请求任务二开始!");
    sleep(9);
    for (int i = 1 ; i <= 9; i++) {
        NSLog(@"任务二正在进行中...%d..",i);
    }
    NSLog(@"任务二完成");
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

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

推荐阅读更多精彩内容

  • 在GCD中关于线程同步的问题,有很多中实现方式:Group函数,barrier函数,信号量等;这里只是简单研...
    leesum阅读 516评论 0 1
  • 基本概念 进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,在iOS系统中,开启一个应用...
    xiaoyuyang612阅读 1,909评论 0 1
  • NSThread 第一种:通过NSThread的对象方法 NSThread *thread = [[NSThrea...
    攻城狮GG阅读 862评论 0 3
  • 目录: (一)线程与进程之间的区别 (二)为什么需要学习多线程 (三)多线程任务执行方式 (四)多线程执行的...
    KingLionsFrank阅读 806评论 6 6
  • iOS中GCD的使用小结 作者dullgrass 2015.11.20 09:41*字数 4996阅读 20199...
    DanDanC阅读 929评论 0 0