iOS 使用GCD多线程技术来处理耗时任务
来源:互联网 发布:sql注入 or 编辑:程序博客网 时间:2024/05/17 09:00
现在的iOS是默认支持多线程的,有些操作比较耗时,但这些耗时的线程不能阻塞主线程。因此需要在实现时,注意确保主线程的顺畅,及时响应用户的交互。
1. 处理耗时的逻辑操作
比如进行图像的压缩和裁剪等耗CPU或GPU的操作时,可以将这些操作放在全局队列中异步执行:
dispatch_async(dispatch_get_global_queue(0, 0), ^{ //complex logic operation });
函数原型为:
dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
async表明异步运行,block代表的是block操作任务,queue则是任务所处队列.
2. 处理耗时的UI操作
2.1 网络操作
有些需要与网络交互的操作,在网络返回前需要显示一个loading的菊花,然后等待网络返回,这时可以使用回调来处理。
比如:处理中的过程,定义为onProgressCallback回调,这个过程显示loading的tip窗口,禁止用户交互;
处理完成,定义为completeCallback(错误或成功),隐藏tip,并给出提示,开启用户交互。
2.2 等待前面UI操作
另外,有时需要等待前面的UI操作完成,比如等待自动隐藏的提示tip 窗口关闭,再进行下一个UI操作,可以使用:
// wait for 1.2 secondsdispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 1.2), dispatch_get_main_queue(), ^{ // show statusbar [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];});
的方法来进行。
dispatch_after();
方法表示延迟执行。
DISPATCH_TIME_NOW//Indicates a time that occurs immediately.
表示当前时间:
dispatch_get_main_queue()
获得主线程。
0 0
- iOS 使用GCD多线程技术来处理耗时任务
- 使用多线程处理耗时工作
- 【Android】使用AsyncTask处理耗时任务
- iOS多线程GCD使用
- ios多线程 GCD使用
- iOS GCD多线程使用
- AsyncTask处理耗时任务
- 【iOS开发-多线程】使用GCD创建多线程(iOS常用技术)
- ios 使用GCD 多线程 教程
- iOS多线程--GCD使用攻略
- iOS GCD 多线程的使用
- iOS 多线程GCD的使用
- ios 使用GCD 多线程 教程
- iOS 多线程之GCD使用
- ios 关于GCD多线程使用
- iOS中GCD多线程开发技术
- iOS的三种多线程技术----GCD
- iOS 多线程~NSThread、NSOperation 、GCD 技术区别
- 欢迎使用CSDN-markdown编辑器
- Linux系统编程之图解进程间通信
- servlet的学习
- 对于任意多边形面积的求法
- apache的一些配置
- iOS 使用GCD多线程技术来处理耗时任务
- Java ZipFile 初窥
- C#中的委托与Java中的接口回调
- 快到连妈妈都不认识你的文件搜索工具 搜索everything
- wikioi1553 互斥的数
- W3c泥垢!如此耿直。。。你是来讲冷笑话的吗?
- 基于maven实现zxing二维码
- Android图片上下左右滑动特效--Recycker实现
- jquery表格的维护和删除