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