1. Texts文件夹:单元测试
2. Frameworks:依赖的框架
3. Info.plist:项目配置文件
为什么要搞个配置文件? 需要保存应用的信息,软件名称等等,相当于身份证。程序加载首先加载配置文件,读取软件名称等信息。
- Bundle display name:项目名称
- Bundle identifier:项目的唯一标识
- Bundle version:项目版本
4. Info.plist对应xcode的project的图形界面,改图形界面的东西,就会改变Info.plist。比如方向等
5. pch文件:也是一个头文件,能被项目中的其他所有源文件共享和访问。
为什么要搞个pch文件?因为提需求,如果一个宏,很多文件都需要用到,怎么解决,搞个公用的头文件,同时导入这个头文件。
5.1 pch作用:
- 放一些全局的宏
- 导入一些全局都需要的头文件,一般开发中放工具类的头文件,或者分类头文件等。
- 管理日志输出。为什么要管理日志输出,因为日志输出非常耗性能,一般发布的时候不需要日志输出,只有调试的时候才需要。
5.2 通常开发中弄一个自己的日志输出,不要系统自带的NSLog
// …表示能接收任何参数
// __VA_ARGS__ 表示左边...的参数会替代到右边NSLog中
#define CZLog(...) NSLog(__VA_ARGS__)
如果不想打印了,直接注释后边NSLog
#define CZLog(...) // NSLog(__VA_ARGS__)
还可以通过一个宏进行条件编译,在调试阶段, xcode会自动定义一个DEBUG宏,利用这个宏,就能进行条件编译.
#ifdef DEBUG // Debug阶段
#define DBLog(...) NSLog( __VA_ARGS__)
#else // Release阶段
#define DBLog(...)
#endif
5.3 在pch写的有关OC的东西,最好放在 #ifdef __OBJC__,Xcode在每个OC文件中都定义了这个宏,也就意味着只有OC中的文件才拥有这些宏,避免项目中有C文件的时候,报错。
5.4 如果在c文件中,使用#import,就会报错,因为c文件不能识别#import,只有OC文件才能识别。在pch中的东西能被项目中的所有文件共享,c文件共享#import就报错。
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
#import "CZTool.h" // 不要写在外面