在实际的开发中,我们常常会遇到这样的一种需求,就是多个网络请求数据全都请求完毕之后,才是使用主线程更新UI的情况,未解决这一问题,我总结了几种解决的方法。
- 1.使用GCD线程组
- 2.通过全局变量累加
- 3.使用RAC信号绑定
1.多线在开发中出现的频率总的来说还是相对较的,下面主要说一下GCD线程组的实现方式。
主要有这么三个步骤
1.创建线程组
2.发起异步请求,处理耗时操作
3.耗时操作全部执行完毕后,回到主线程
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 执行一个耗时操作的异步操作
});
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 执行一个耗时操作的异步操作
});
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
// 等待前面的异步操作都执行完毕后,回到主线程
});
2.使用全局变量计数,这是一种最简单的方法
3.使用RAC RAC 2.5的版本是OC的稳定版本,具体实现,可以去研究一下FRPH函数式编程[https://github.com/ReactiveCocoa/ReactiveCocoa.git]