多线程iOS开发点滴想法

iOS 同一个页面,多个网络请求如何处理

2022-07-26  本文已影响0人  海边的遐想

首先需要定义一个group:
@property (nonatomic,strong)dispatch_group_t group;
其次所有的网络请求放在一个方法中方便查看

平时在进行多线程处理任务时,有时候希望多个任务之间存在着一种联系,希望在所有的任务执行完后做一些总结性处理。
那么就可以将多个任务放在一个任务组中进行统一管理。dispatch提供了相应的API供我们完成这一需求。
结合到项目中,最多的使用场景是多个请求返回后,统一进行下一步的处理。在护眼模式请求护眼时间、以及百度BOS上传多张图片的时候,均使用了dispatch_group_t这一功能。

dispatch_group_t相关属性介绍

dispatch_group_async(group, queue, block);
将block任务添加到queue队列,并被group组管理

dispatch_group_enter(group);
声明dispatch_group_enter(group)下面的任务由group组管理,group组的任务数+1

dispatch_group_leave(group);
相应的任务执行完成,group组的任务数-1

dispatch_group_create();
创建一个group组

dispatch_group_wait(group1, DISPATCH_TIME_FOREVER);
当前线程暂停,等待dispatch_group_wait(group1, DISPATCH_TIME_FOREVER)上面的任务执行完成后,线程才继续执行。

dispatch_group_notify(group1, queue1,block);
监听group组中任务的完成状态,当所有的任务都执行完成后,触发block块,执行总结性处理。

上一篇 下一篇

猜你喜欢

热点阅读