新秋二十八 iOS小记 【文件夹资源添加方式对比/计算代码执行时
2019-07-28 本文已影响0人
不不不不同学
目录
一、NSInteger 长度
二、计算代码执行时间
三、文件夹资源添加方式对比
一、NSInteger长度
typedef long NSInteger;
NSinteger 的长度会随着处理器的不同而不同 :
- 32位 32-bit integer
- 64位 64-bit integer
iPhone A7处理器之后都是64位包含A7
在64位机模拟器上,代码测试结果是:
2的62次方是 4611686018427387904
2的63次方减1是 9223372036854775807
2的63次方是 -9223372036854775808
2的64次方是 0
得出结论:NSInteger在64位取值范围是[2的 -63次方]~[2的63次方减1]
二、计算代码执行时间
CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent();
CFAbsoluteTime linkTime = (CFAbsoluteTimeGetCurrent() - startTime);
NSLog(@"%f ms", linkTime *1000.0);
三、文件夹资源
小节目录
1、直接拖入文件
2、直接拖入文件夹
3、直接拖入文件夹 引用方式
1、直接拖入文件
有时我们需要读取Xcode中的资源,通常使用以下方式:
(1)将文件拖入Xcode中,勾选 Copy items if needed
,勾选 Create groups

(2)读取文件路径
NSString * path = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"json"];
(3)文件位置
实际上,Xcode Command + B
编译后,Products文件夹下就会有App形式的文件出现。那刚拖入的文件,此时是在App中是处于什么位置的呢?如图:

2、直接拖入文件夹
同样勾选 Copy items if needed
,勾选 Create groups


注意:工程中有两个config.json
- 若二者内容完全相同,则编译结果如上图
- 若二者内容不同,则编译时会报错
Multiple commands produce
报错原因也从上图可得知,因为Xcode内这些文件最终都会被放置在一个目录下。则同名不同内容的文件,放同一目录,当然是不允许的。
小总结:该方式想编码过程,通过文件夹管理资源是不可能的,因为最终所属同一路径下。而原本的文件夹也不会被带过去。
3、直接拖入文件夹 引用方式
勾选 Copy items if needed
,勾选 Create folder references



读取方式:
NSString * basePath = [NSString stringWithFormat:@"%@/jsonFolder", [[NSBundle mainBundle] bundlePath]];
NSString * filePath = [basePath stringByAppendingString:@"/config.json"];
小总结:即使两个文件同名不同内容,也没有任何影响。编译错误不会报错 Multiple commands produce
。而编译出来的App中,原本文件夹形式存在的,也仍然以文件夹形式存在,编码过程可通过文件夹进行统一管理。