1.项目中的常见文件
1.XxxxTest文件夹用来做单元测试。
2.Products目录
- 在Mac程序下,生产的可执行文件app会存放到该目录下。该可执行文件未加密,可使用class-dump提取出所有头文件
- iOS程序产生的是ipa文件。这个目录对于iOS程序来说意义不大。
- info.plist(全局配置文件, 非常重要, 不能删除 ):
- pch文件:(Prefix Header File)(头文件)现在的项目都需要自己创建
2.info.plist详解
- 在xcode5 中是"项目名称-Info.plist"表示项目的全局配置文件,非常重要。在新版本xcode中(和xcode6.1),该文件名称就叫Info.plist。
- 注意:自己创建的plist文件中不要包含Info关键字。
- Info.plist中的一些配置项:
- Bundle display name(在xcode6.1中叫做"Bundle name"), 表示软件安装到手机上后,显示的名称。
** 当修改了该名称后,为了保证有效, 点击Product -> Clean, 同时将软件从模拟器中卸载掉,然后再重新运行。 - Bundle identifier, app的唯一标识。
- Bundle version, 每次发布软件的版本号。每次向AppStore上传的同一个软件, 新的版本号必须大于旧的, 否则无法上传。
- Main storyboard file base name, 对应的就是选中"项目" -> "General" -> "Deployment Info" -> "Main Interface" 中的设置。
- Supported interface orientations, 标识设备所支持的方向。对应的选中"项目" -> "General" -> "Deployment Info" -> "Device Orientation"。iPhone只支持三种方向, 不支持上下旋转(iPad支持)。Portrait(竖屏)、Landscape Left(横屏向左)、Landscape Right(横屏向右)。
- Info.plist就是一个xml文件, 用记事本打开看一下。
3.详解PCH文件
1.为什么使用PCH文件
- 整个项目中很多地方都在使用某个类的头文件
- 整个项目很多地方都在用同一个"宏"
- 在项目中很多地方用到了NSLog()函数,想要一下子清除掉
2.特点
pch文件就是一个头文件(类似于*.h文件)项目中的所有其他代码文件无需显示导入该PCH文件, 默认就都可以访问(其他文件无需手动#import该 pch文件就能使用)。
参考代码:
假设在整个项目中有多个地方在使用WYModel类, 那么可以在每个使用到WYModel类的地方都#import "WYModel.h", 或者把#import "WYModel.h"放到pch文件中。
3.如何创建PCH
1.在XCode6.1过后默认就没有pch文件,创建方式: 选择"Supporting Files" -> 右键 -> "New File" -> "Other" -> "PCH File" -> "PrefixHeader.pch"。
2.选中项目 -> Build Setting -> All -> 搜索"prefix head" -> 修改Prefix Header的内容为:
- "$(SRCROOT)/$(PRODUCT_NAME)/PrefixHeader.pch" (如果有问题,换下面的方式,可能会与中文有关)
-
或者
"$(SRCROOT)/对应的文件夹名/PrefixHeader.pch"
4.项目中PCH常用宏
// 屏幕宽度
#define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width
// 屏幕高度
#define SCREEN_HEIGHT [[UIScreen mainScreen] bounds].size.height
// Color
#define COLOR_RGB(r,g,b) [UIColor colorWithRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:1]
#define COLOR_RGBA(r,g,b,a) [UIColor colorWithRed:(r/255.0f) green:(g/255.0f) blue:(b/255.0f) alpha:a]
#define WLBHexColor(colorString) [WLBHexColor hexColor:colorString]
// NSLog
#if DEBUG
#define NSLog(s,...) NSLog(@"%s LINE:%d < %@ >",__FUNCTION__, __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__])
#else
#define NSLog(...) {}
#endif