iOS子线程操作总结
来源:互联网 发布:中国网络教育干部学院 编辑:程序博客网 时间:2024/06/05 09:33
子线程同步与异步:
dispatch_sync(),同步添加操作。他是等待添加进队列里面的操作完成之后再继续执行。
dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);
NSLog(@"1");
dispatch_sync(concurrentQueue, ^(){
NSLog(@"2");
[NSThread sleepForTimeInterval:10];
NSLog(@"3");
});
NSLog(@"4");
输出 :
11:36:25.313 GCDSeTest[544:303] 1
11:36:25.313 GCDSeTest[544:303] 2
11:36:30.313 GCDSeTest[544:303] 3//模拟长时间操作
11:36:30.314 GCDSeTest[544:303] 4
dispatch_async ,异步添加进任务队列,它不会做任何等待
dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);
NSLog(@"1");
dispatch_async(concurrentQueue, ^(){
NSLog(@"2");
[NSThread sleepForTimeInterval:5];
NSLog(@"3");
});
NSLog(@"4");
输出:
11:42:43.820 GCDSeTest[568:303] 1
11:42:43.820 GCDSeTest[568:303] 4
11:42:43.820 GCDSeTest[568:1003] 2
11:42:48.821 GCDSeTest[568:1003] 3//模拟长时间操作时间
子线程操作UI:
方法1:performSelectorOnMainThread
[self performSelectorOnMainThread:@selector(updateUI:) withObject:image waitUntilDone:NO];方法2:dispatch_async(dispatch_get_main_queue(), ^{ ... })
- dispatch_async(dispatch_get_global_queue(0, 0), ^{
- // 处理耗时操作的代码块...
- //通知主线程刷新
- dispatch_async(dispatch_get_main_queue(), ^{
- //回调或者说是通知主线程刷新,
- });
- });
dispatch_get_global_queue(0, 0),指用了全局队列。
一般来说系统本身会有3个队列。global_queue,current_queue,以及main_queue.
获取一个全局队列是接受两个参数,第一个是我分配的事物处理程序块队列优先级。分高低和默认,0为默认2为高,-2为低
- #define DISPATCH_QUEUE_PRIORITY_HIGH 2
- #define DISPATCH_QUEUE_PRIORITY_DEFAULT 0
- #define DISPATCH_QUEUE_PRIORITY_LOW (-2)
处理完事物后,需要将结果返回给或者是刷新UI主线程,同样,和上面一样,抓取主线程,程序块操作。
- iOS子线程操作总结
- iOS 耗时操作放在子线程,阻止线程阻塞
- 并发操作子线程
- iOS 开启子线程
- 子线程中循环操作UI线程时导致子线程无法正常结束的问题总结
- iOS子线程操作检测版本更新,防止阻塞住线程
- c#子线程操作ui
- 子线程操作malloc内存
- android子线程操作ui
- ios 子线程刷UI
- iOS 创建子线程方法
- Ios子线程渲染Opengl
- Android 子线程中操作UI线程
- iOS线程操作
- 子线程不能更新UI线程总结
- iOS,关于C结构体数组在子线程中写的操作
- iOS子线程操作检测版本更新,有新版本通知用户更新, CheckVersion
- iOS线程专题总结
- redis高可用集群介绍
- 一键打包出多个不同包名,不同应用名称和图标的APK
- Java六大设计原则-单一原则
- caffe增加自己的layer实战(下-续1)--caffe学习(13)
- 产品经理笔试面试题(网搜资源)
- iOS子线程操作总结
- githug关卡小游戏,练习git
- 防盗链
- TexturePacker 批处理
- 55.自定义View练习(三)圆形进度条控件
- Laravel本就好玩
- Echars示例总结
- 键盘监听事件
- JQuery文件重复引用问题