iOS开发(OC)——Dispatch Group

iOS开发交流群:301058503

上次提到,利用信号量实现异步线程的同步执行,开发中还经常遇到一种场景:有多个异步的网络请求并发执行,在所有的网络请求完成后统一刷新界面,该如何处理呢?

我们可以用最笨的方法,在所有网络请求开始前,记录网络请求的总数totoalCount;然后用一个变量count记录网络请求结束的数量,在每一个网络请求结束后变量count++;当totoalCount==count时刷新界面。这样做也可以实现上述场景,但是感觉有点low,而且代码有点乱。有没有高大尚一点的做法呢?Dispatch Group闪亮登场。

首先,先了解一下Dispatch Group几个API的用法

  1. dispatch_group_create:创建一个group,初始计数为0;
  2. dispatch_group_enter:负责将group的计数+1;
  3. dispatch_group_leave:负责将group的计数-1;
  4. dispatch_group_notify:监听group计数,当group计数为0时,执行里面的操作。

请看下面的例子:三个dispatch_async异步线程里面的打印顺序不固定,但dispatch_group_notify里面的打印肯定是在三个dispatch_async都打印完之后。

dispatch_group_t group = dispatch_group_create();//group计数=0
    
    
    dispatch_group_enter(group);//group计数+1
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值