项目名Tests 做单元测试用的
frameworks 项目依赖的框架
products 对mac的有用 ,ios没有用
以上是一个 Single View Application
Info.plist常见的设置 ,本质是上 xml
新建一个工程之后,将会在 Supporting files文件夹下看到一个”工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除.
在旧版本的xcode中, 这个配置文件的名字就叫做 “Info.plist”
然后,在最新的 xcode6中,又变成了 Info.plist ,难道是复古了?
项目中其他Plist文件不能带有 “Info” 这个字眼,不然会被错认为是重要的 Info.plist
可以看到,很多项目的信息
软件名称 ,默认情况下 ,是项目名称
info.plist 不能乱删 ,其他文件不要命名为 info.plist
如果更改了 plist ,(修改了项目的资源文件也是如此)
第一件事情是 clean ,
第二件是把原来的软件卸载掉
Info.plist 的常见属性
括号内是用文本编辑器打开看到的 key
Localization nativedevelopment region (CFBundleDevelopentRegion)-本地化相关
Bundle display name (CFBundleDisplayName)- 程序安装后显示的名称,限制在10-12个字符,如果超出,将被显示缩写名称
Icon file (CFBundleIconFile) –app图标名称,一般为 Icon.png
Bundle version(CFBundleVersion)-应用程序的版本号,每次往App Store 发布一个版本时,需要增加这个版本号.
Main storyboard file basename(NSMainStoryboardFile)-主storyboard文件的名称
Bundle identifier(CFBundleIdentifier)-项目的唯一标识,部署到真机时候用到.
prefix.pch文件
1.最适合放全局的宏,模型等
2.做 全局导入
比如:
调试阶段: 写代码,调试错误,肯定需要打印
发布阶段: 写好的代码生成 ipa等压缩包文件 ,上传到 AppStore ,安装到用户的设备上
MJLog(...) ... 代表可以接受任何参数
#define MyLog(…)NSLog(__VA_ARGS__)
如果不想打印 ,那么直接把 NSLog(__VA_ARGS__)注释即可
还有更智能的方式
如果是调试阶段:(你用的xcode运行的程序),那么系统会自动定义一个叫做DEBUG的宏
打包的时候, 系统会自动删除 DEBUG的宏
#ifdefDEBUG //调试阶段
#defineMJLog(...) NSLog(__VA__ARGS__)
#else //发布阶段
#defineMJLog(...)
#endif
prefix.pch的作用
1.存放全局的宏(整个项目都用得上的宏)
2.用来包含一些全部的头文件(整个项目中都用得上的头文件)
3.能自动打开或者关闭日志输出功能
建议把所有和 oc有关的东西写到 ifdef 里面
比如
//
// Prefix header
//
// The contents ofthis file are implicitly included at the beginning of every source file.
//
#import <Availability.h>
#ifndef __IPHONE_5_0
#warning "This project uses features only availablein iOS SDK 5.0 and later."
#endif
#ifdef __OBJC__ //里面的内容只能用于.m 或者 .mm文件中
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
#ifdef __OBJC__ //里面的内容只能用于.m 或者 .mm文件中
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "someClass.h"
#ifdef DEBUG //调试阶段
#define MyLog(...)NSLog(__VA_ARGS__)
#else //发布阶段
#define MyLog(...)
#endif
这样的目的是:防止其他类型的文件,比如 c语言的文件使用我们的全局宏等
更重要的是导入
外面的所有东西是整个项目共享的
如果#imort写到ifdef外面,那么默认其他文件比如 c 也会加上 ,它根本没有此种语句 ! 所以连编译都不会通过 .