iOS学习笔记-109.多线程08——CGD快速迭代
来源:互联网 发布:亚像素边缘提取算法 编辑:程序博客网 时间:2024/06/07 07:33
- 多线程08CGD快速迭代
- 一说明
- 二for迭代
- 三GCD的快速迭代
- 四使用for迭代移动文件示例
- 1 说明
- 2 示例代码
- 3 图示与结果
- 五使用for迭代移动文件示例
- 1 示例代码
- 2 图示与结果
多线程08——CGD快速迭代
一、说明
使用 dispatch_apply 函数能进行快速迭代遍历
/*第一个参数:遍历的次数第二个参数:队列第三个参数:索引*/dispatch_apply(size_t iterations, dispatch_queue_t queue, DISPATCH_NOESCAPE void (^block)(size_t));
示例
dispatch_apply(10, dispatch_get_global_queue(0, 0), ^(size_t index){ // 执行10次代码,index顺序不确定});
二、for迭代
使用for 和forin语句是一样的
/*传统的for迭代 同步*/-(void)forDemo{ for (int i=0; i<10; i++) { NSLog(@"%zd------%@",i,[NSThread currentThread]); }}
结果
[80195:457998] 0------<NSThread: 0x60800007ac00>{number = 1, name = main}[80195:457998] 1------<NSThread: 0x60800007ac00>{number = 1, name = main}[80195:457998] 2------<NSThread: 0x60800007ac00>{number = 1, name = main}[80195:457998] 3------<NSThread: 0x60800007ac00>{number = 1, name = main}[80195:457998] 4------<NSThread: 0x60800007ac00>{number = 1, name = main}[80195:457998] 5------<NSThread: 0x60800007ac00>{number = 1, name = main}[80195:457998] 6------<NSThread: 0x60800007ac00>{number = 1, name = main}[80195:457998] 7------<NSThread: 0x60800007ac00>{number = 1, name = main}[80195:457998] 8------<NSThread: 0x60800007ac00>{number = 1, name = main}[80195:457998] 9------<NSThread: 0x60800007ac00>{number = 1, name = main}
三、GCD的快速迭代()
示例代码
/*GCD迭代 异步*/-(void)applyDemo{ /* 第一个参数:遍历的次数 第二个参数:队列 第三个参数:index索引 */ dispatch_apply(10, dispatch_get_global_queue(0, 0), ^(size_t index) { NSLog(@"%zd------%@",index,[NSThread currentThread]); });}
结果
[80625:461035] 0------<NSThread: 0x608000071f40>{number = 1, name = main}[80625:461584] 1------<NSThread: 0x608000075780>{number = 6, name = (null)}[80625:461035] 4------<NSThread: 0x608000071f40>{number = 1, name = main}[80625:461586] 3------<NSThread: 0x60800007a9c0>{number = 7, name = (null)}[80625:461587] 2------<NSThread: 0x600000079a80>{number = 8, name = (null)}[80625:461035] 6------<NSThread: 0x608000071f40>{number = 1, name = main}[80625:461584] 5------<NSThread: 0x608000075780>{number = 6, name = (null)}[80625:461035] 9------<NSThread: 0x608000071f40>{number = 1, name = main}[80625:461587] 8------<NSThread: 0x600000079a80>{number = 8, name = (null)}[80625:461586] 7------<NSThread: 0x60800007a9c0>{number = 7, name = (null)}
四、使用for迭代移动文件示例
4.1 说明
移动文件我们可以按以下步骤操作
获取到源文件夹路径
获取到目的文件夹路径
获取源文件夹下的所有文件
移动文件到目的文件夹下
4.2 示例代码
/===================移动文件demo=================/*使用for循环*/-(void)moveFilesWithFor{ //1.源文件路径 NSString *from = @"/Users/qiwenming/Desktop/from"; //2.目的文件路径 NSString *to = @"/Users/qiwenming/Desktop/to"; //3.获取目录下的所有文件 NSArray * subPaths = [[NSFileManager defaultManager] subpathsAtPath:from]; //4.遍历然后移动文件 NSInteger count = subPaths.count; for (int i=0; i<count; i++) { //4.1拼接文件全路径 NSString *formFullPath = [from stringByAppendingPathComponent:subPaths[i]]; NSString *toFullPath = [to stringByAppendingPathComponent:subPaths[i]]; //4.2移动 [[NSFileManager defaultManager]moveItemAtPath:formFullPath toPath:toFullPath error:nil]; NSLog(@"%@-----%@----%@",formFullPath,toFullPath,[NSThread currentThread]); }}
4.3 图示与结果
打印结果
2017-09-03 03:44:46.453 03_UIview83多线程GCD[82110:468582] /Users/qiwenming/Desktop/from/.DS_Store-----/Users/qiwenming/Desktop/to/.DS_Store----<NSThread: 0x600000072e00>{number = 1, name = main}2017-09-03 03:44:46.454 03_UIview83多线程GCD[82110:468582] /Users/qiwenming/Desktop/from/test1.png-----/Users/qiwenming/Desktop/to/test1.png----<NSThread: 0x600000072e00>{number = 1, name = main}2017-09-03 03:44:46.454 03_UIview83多线程GCD[82110:468582] /Users/qiwenming/Desktop/from/test2.png-----/Users/qiwenming/Desktop/to/test2.png----<NSThread: 0x600000072e00>{number = 1, name = main}2017-09-03 03:44:46.455 03_UIview83多线程GCD[82110:468582] /Users/qiwenming/Desktop/from/test3.png-----/Users/qiwenming/Desktop/to/test3.png----<NSThread: 0x600000072e00>{number = 1, name = main}2017-09-03 03:44:46.455 03_UIview83多线程GCD[82110:468582] /Users/qiwenming/Desktop/from/test4.png-----/Users/qiwenming/Desktop/to/test4.png----<NSThread: 0x600000072e00>{number = 1, name = main}2017-09-03 03:44:46.455 03_UIview83多线程GCD[82110:468582] /Users/qiwenming/Desktop/from/test5.png-----/Users/qiwenming/Desktop/to/test5.png----<NSThread: 0x600000072e00>{number = 1, name = main}2017-09-03 03:44:46.456 03_UIview83多线程GCD[82110:468582] /Users/qiwenming/Desktop/from/test6.png-----/Users/qiwenming/Desktop/to/test6.png----<NSThread: 0x600000072e00>{number = 1, name = main}2017-09-03 03:44:46.456 03_UIview83多线程GCD[82110:468582] /Users/qiwenming/Desktop/from/test7.png-----/Users/qiwenming/Desktop/to/test7.png----<NSThread: 0x600000072e00>{number = 1, name = main}2017-09-03 03:44:46.456 03_UIview83多线程GCD[82110:468582] /Users/qiwenming/Desktop/from/.DS_Store-----/Users/qiwenming/Desktop/to/.DS_Store----<NSThread: 0x600000072e00>{number = 1, name = main}
五、使用for迭代移动文件示例
5.1 示例代码
/*使用GCD迭代*/-(void)moveFilesWithApply{ //1.源文件路径 NSString *from = @"/Users/qiwenming/Desktop/from"; //2.目的文件路径 NSString *to = @"/Users/qiwenming/Desktop/to"; //3.获取目录下的所有文件 NSArray * subPaths = [[NSFileManager defaultManager] subpathsAtPath:from]; //4.遍历然后移动文件 NSInteger count = subPaths.count; dispatch_apply(count, dispatch_get_global_queue(0, 0), ^(size_t i) { //4.1拼接文件全路径 NSString *formFullPath = [from stringByAppendingPathComponent:subPaths[i]]; NSString *toFullPath = [to stringByAppendingPathComponent:subPaths[i]]; //4.2移动 [[NSFileManager defaultManager]moveItemAtPath:formFullPath toPath:toFullPath error:nil]; NSLog(@"%@-----%@----%@",formFullPath,toFullPath,[NSThread currentThread]); });}
5.2 图示与结果
打印结果
2017-09-03 03:52:12.550 03_UIview83多线程GCD[83221:477841] /Users/qiwenming/Desktop/from/.DS_Store-----/Users/qiwenming/Desktop/to/.DS_Store----<NSThread: 0x60000007d940>{number = 1, name = main}2017-09-03 03:52:12.551 03_UIview83多线程GCD[83221:484973] /Users/qiwenming/Desktop/from/test1.png-----/Users/qiwenming/Desktop/to/test1.png----<NSThread: 0x600000268bc0>{number = 24, name = (null)}2017-09-03 03:52:12.551 03_UIview83多线程GCD[83221:484972] /Users/qiwenming/Desktop/from/test2.png-----/Users/qiwenming/Desktop/to/test2.png----<NSThread: 0x600000269640>{number = 25, name = (null)}2017-09-03 03:52:12.551 03_UIview83多线程GCD[83221:484974] /Users/qiwenming/Desktop/from/test3.png-----/Users/qiwenming/Desktop/to/test3.png----<NSThread: 0x6000002692c0>{number = 26, name = (null)}2017-09-03 03:52:12.551 03_UIview83多线程GCD[83221:477841] /Users/qiwenming/Desktop/from/test4.png-----/Users/qiwenming/Desktop/to/test4.png----<NSThread: 0x60000007d940>{number = 1, name = main}2017-09-03 03:52:12.551 03_UIview83多线程GCD[83221:484972] /Users/qiwenming/Desktop/from/test6.png-----/Users/qiwenming/Desktop/to/test6.png----<NSThread: 0x600000269640>{number = 25, name = (null)}2017-09-03 03:52:12.552 03_UIview83多线程GCD[83221:484973] /Users/qiwenming/Desktop/from/test5.png-----/Users/qiwenming/Desktop/to/test5.png----<NSThread: 0x600000268bc0>{number = 24, name = (null)}2017-09-03 03:52:12.552 03_UIview83多线程GCD[83221:484974] /Users/qiwenming/Desktop/from/test7.png-----/Users/qiwenming/Desktop/to/test7.png----<NSThread: 0x6000002692c0>{number = 26, name = (null)}
阅读全文
0 0
- iOS学习笔记-109.多线程08——CGD快速迭代
- iOS学习笔记-105.多线程04——CGD基础
- iOS学习笔记-107.多线程06——CGD线程间通信下载图片
- iOS学习笔记-108.多线程07——CGD栅栏函数、延时、一次性代码
- iOS学习笔记-110.多线程09——CGD队列组
- iOS学习笔记-111.多线程10——CGD队列组图片下载合成示例
- iOS学习笔记-106.多线程05——CGD同步、异步函数和并行、串行、主队列示例
- iOS学习笔记08—多线程概述
- iOS(CGD)
- iOS学习笔记——多线程
- iOS学习笔记03—多线程
- 在CGD中快速实现多线程的并发控制
- 在CGD中快速实现多线程的并发控制
- 在CGD中快速实现多线程的并发控制
- CGD多线程的使用
- 【Python】学习笔记——-4.2、迭代
- iOS多线程学习笔记
- Ios多线程学习笔记
- iOS学习笔记-108.多线程07——CGD栅栏函数、延时、一次性代码
- STM32串口配置的一种方法
- oracl普通表转换成分区表(使用id作为间隔分区)
- react-native报错[NSTaggedPointerString unsignedIntValue]: unrecognized selector sent to instance的解决办法
- ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
- iOS学习笔记-109.多线程08——CGD快速迭代
- Centos7安装Nginx
- 一、CentOS6.5安装ElasticSearch5.5完整纪录与问题总结
- ORACLE 11G 性能诊断优化之ASH实战分析详解
- iOS学习笔记-110.多线程09——CGD队列组
- promise.js
- Android强指针和弱指针
- iOS学习笔记-111.多线程10——CGD队列组图片下载合成示例
- Spring整合Redis(spring-data-redis)