最近在复习一些ios开发的基础知识,在多线程这一章的时候,看到了分派组,想起了之前开发过程中遇到的一些坑,故写这篇blog,免得后来之人犯同样的错误。
这个坑的场景大概是这样的,上传多张图片,图片上传完成之后,更新UI。之前老的方案是一张一张的传,传完一张再检查是否完成,这样的效率非常的低下,当时为了赶时间,也没太在意这件事情。现在想想,最佳方案还是使用dispatch_group_t(分派组)来做。
下面一段代码,是从别的地方copy来的,用来说明分派组的作用和使用方法。
dispatch_group_async可以实现监听一组任务是否完成,完成后得到通知执行其他的操作。这个方法很有用,比如你执行三个下载任务,当三个任务都下载完成后你才通知界面说完成的了。下面是一段例子代码:
- [cpp]
- dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
- dispatch_group_t group = dispatch_group_create();
- dispatch_group_async(group, queue, ^{
- [NSThread sleepForTimeInterval:1];
- NSLog(@"group1");
- });
- dispatch_group_async(group, queue, ^{
- [NSThread sleepForTimeInterval:2];
- NSLog(@"group2");
- });
- dispatch_group_async(group, queue, ^{
- [NSThread sleepForTimeInterval:3];
- NSLog(@"group3");
- });
- dispatch_group_notify(group, dispatch_get_main_queue(), ^{
- NSLog(@"updateUi");
- });
- dispatch_release(group);
- dispatch_group_async是异步的方法,运行后可以看到打印结果:
- group1
- group2
- group3
- updateUI
本文介绍如何通过分派组(dispatch_group_t)提高iOS应用中多线程图片上传效率,并在所有图片上传完成后同步更新UI。详细展示了分派组在异步任务管理中的作用及其实现方式。

被折叠的 条评论
为什么被折叠?



