多线程 CGD快速迭代

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

[self moveFileWithGCD];

}

-(void)forDome

{

//同步

for (NSInteger i = 0; i<10; i++) {

NSLog(@"%zd---%@",i,[NSThread currentThread]);

}

}

//开子线程和主线程一起完成遍历任务,任务的执行时并发的

- (void)applyDemo

{

/*

第一个参数:遍历的次数

第二个参数:队列(并发队列)

第三个参数:index 索引

*/

dispatch_apply(10, dispatch_get_global_queue(0, 0), ^(size_t index) {

NSLog(@"%zd---%@",index,[NSThread currentThread]);

});

}

//使用for循环

- (void)moveFile{

//1.拿到文件路径

NSString *form = @"/Users/liuzhenjie/Desktop/from";

//2.获取目标文件路劲

NSString *to = @"/Users/liuzhenjie/Desktop/to";

//    3.得到目录下面的所有文件

NSArray *subPaths = [[NSFileManager defaultManager] subpathsAtPath:form];

NSLog(@"%@",subPaths);

//4.遍历所有文件,然后执行剪切操作

NSInteger count = subPaths.count;

for (NSInteger i=0; i<count; i++) {

//4.1拼接文件的全路径

//        NSString *fullPath = [form stringByAppendingString:subPaths[i]];

NSString *fullPath = [form stringByAppendingPathComponent:subPaths[i]];

NSString *toFullPath = [to stringByAppendingPathComponent:subPaths[i]];

NSLog(@"%@",fullPath);

//        4.2执行剪切操作

/**

*  第一个参数:要剪切的文件在哪里

//         第二个参数:文件应该被存到那个位置

*/

[[NSFileManager defaultManager]moveItemAtPath:fullPath toPath:toFullPath error:nil];

NSLog(@"%@---%@--%@",fullPath,toFullPath,[NSThread currentThread]);

}

}

//使用GCD

-(void)moveFileWithGCD

{

//1.拿到文件路径

NSString *from = @"/Users/liuzhenjie/Desktop/from";

//2.获得目标文件路径

NSString *to = @"/Users/liuzhenjie/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 *fullPath = [from stringByAppendingString:subPaths[i]];

//在拼接的时候会自动添加/

NSString *fullPath = [from  stringByAppendingPathComponent:subPaths[i]];

NSString *toFullPath = [to stringByAppendingPathComponent:subPaths[i]];

//4.2 执行剪切操作

/*

第一个参数:要剪切的文件在哪里

第二个参数:文件应该被存到哪个位置

*/

[[NSFileManager defaultManager]moveItemAtPath:fullPath toPath:toFullPath error:nil];

NSLog(@"%@---%@---%@",fullPath,toFullPath,[NSThread currentThread]);

});

}

@end

时间: 2024-10-03 14:06:01

多线程 CGD快速迭代的相关文章

腾讯敏捷开发及快速迭代

腾讯敏捷开发及快速迭代 http://www.edu-hb.com     2013-6-4 15:23:50     来源: itwriter      从 2006 年开始,腾讯的研发规模开始膨胀,开发模式急需规范和标准化,到底走 IPD(集成产品开发)还是 Agile(敏捷)的开发路线,公司管理层也在为拿不定主意而犯愁,之后研发管理部开始与 ThoughtWorks 公司接触,逐渐将敏捷产品开发引入进来,并正式命名为 TAPD(Tencent Agile Product Developme

产品设计中的 “快速迭代” 思维

一谈到"互联网思维",大家都会想到"快速迭代".但我发现,很多人对于" 快速迭代"的理解是不够全面的. 大部分人对"快速迭代"的理解是:一个产品,所有的功能不用一次做出来,做好一部分上线一部分,一些功能的完善可以等产品上线后,靠后续版本,慢慢改进. 有人基于上述的理解,会对"快速迭代"提出疑义: 1.     在总的工作量一定的情况下,分几次开发和上线,要完成所有的功能,所花费的总时间往往会更长,"

敏捷开发的26条至理名言 快速迭代式开发使用方法总结

敏捷开发真正的问题是什么?其实敏捷主要还是一种观念,一种意识,通过人来推动. 本文总结了26条有关敏捷开发的关键原则,如何快速迭代式开发,供读者参考借鉴,以指引敏捷软件开发团队. 1.完整地干完一件事后在开始另一件事:用厨房比喻来说就是:"先上这道菜,再开始做下一道".软件开发的最大问题就是同时开始几件事情,这将不可避免的造成某些工作被废弃,从而造成浪费.专注于一件事:完整地实现其功能:运行测试:编写文档:签入所有,把这当做一项工作完成,然后再开始下一件事. 2.不要破坏构建:非常明显

张小龙:学习和快速迭代比过去的经验更重要 一切从用户角度出发

看了一篇关于微信事业群WXG领导人张小龙的报导,他说的挺好,“学习和快速迭代比过去的经验更重要”,正如<把口红卖给男人>里面的一个观点不谋而合,过去的经验或许会把你困在思维的框中,阻碍思考.从用户的角度出发才是做产品的初衷. 据腾讯第二季度财报信息显示,旗下的微信与WeChat合并月活跃用户已经达到了4.38亿.微信是国内迄今为止增速最快的在线即时通信工具,从0到1亿用户,用了14个月的时间,从1亿到2亿,用了不到半年的时间,而历史上,QQ即时通讯工具的用户从零到积累2亿用户,花费了大约四年半

如何借助配置中心ACM加速企业IT服务快速迭代

摘要: 在5月29日召开的第二届研发效能嘉年华中,云效邀请了阿里云产品团队的伏羿和来自阿里巴巴中间件技术部的彦林带来了"如何借助配置中心ACM加速企业IT服务快速迭代"的主题分享. 分别对配置中心ACM和ACM技术进行了讲解,并且对ACM的主要应用场景进行了介绍,并进行了Demo环节. 在5月29日召开的第二届研发效能嘉年华中,云效邀请了阿里云产品团队的伏羿和来自阿里巴巴中间件技术部的彦林带来了"如何借助配置中心ACM加速企业IT服务快速迭代"的主题分享. 分别对配

随着区块链技术的快速迭代进化

从时代的虚拟货币,到时代的智能合约,随着区块链技术的快速迭代进化,以落地应用为代表的区块链时代已拉开帷幕,火币网官网通过标准制定.年更被视作"区块链+实体经济"在中国形成投资风口的元年.火币网官网通过标准制定.联合认证.资源整合.机制设计等方式,打造成推动区块链产业发展的权威.专业人才赋能平台. 这其中,不少上市公司凭借产业竞争力优势在这波区块链技术与实体产业应用融合的浪潮中扮演"吃螃蟹的人".根据算力智库日前发布的<"区块链+"上市公司研

【转载】快速迭代式开发使用方法总结

本文转载自http://blog.csdn.net/dongkui168/article/details/9069407 ------------------------------------------------------------------------------------------------------ 为什么我在这里主要讨论迭代式软件开发?本文在此抛开千篇一律的理论,拟就根据多年的实践,总结出一套比较务实.可操作性强的方法,以期望在有限的资源下确保软件质量得到较大保证.一

多线程中快速定位段错误位置

参考链接:https://blog.csdn.net/u011426247/article/details/79736111 在做嵌入式Linux开发的时候,程序很容易出现段错误.段错误一般是内存操作指针出错或是内存溢出等问题,有的时候系统会有一点错误提示,但有的时候就直接提示个Segmentation fault (core dumped) .如果程序是单线程,那很好处理,编译的时候添加参数-g  ,直接使用gdb 单步调试就可以直接定位到问题点在哪了.但是对于多线程,情况就不一样了.多线程进

GCD快速迭代(遍历)

函数: 该方法会开启多条子线程, 主线程也会参与执行.     因此不要传主队列. p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; background-color: #ffffff } p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; background-color: #ffffff }