1.iphone指令集
Arm64: iphone 5s, ipad air, retina ipad mini
Armv7s: iphone 5, iphone 5c, ipad 4
Armv7: iphone 3GS, iphone 4, iphone 4S, iPod 3G/4G/5G, ipad, ipad 2, ipad 3, ipad mini
2.build active architecture only
是否只编译当前使用的设备对应的arm指令集
通常情况下Debug模式下设置成YES,Release模式下设置成NO
3.指令集都是向下兼容的
armv6 iPhone、iPhone2、iPhone3G、第一代和第二代iPod Touch
armv7 iPhone4、iPhone4S
armv7s iPhone5、iPhone5C
arm64 iPhone5S
4.Base SDK & DeploymentTarget
Base SDK设置为当前xcode所支持的最高的SDK版本,比如“iphone device 4.0”,DeploymentTarget设置为你所支持的最低的iphone os版本,比如“iphone os 3.0”
那么你的程序就可以再iphone os 3.0到4.0之间运行,当然,前提是你没有用到新的4.0的API
5.targeted device family
如果选择iphone,则会所有硬件平台用:iphone,ipod,ipad
如果选择ipad,则只能ipad使用。
如果选择ipad/iphone,也是所有平台可用,区别在于ipad上面不是2x模式了,而是全屏。
6.Header Search Paths是一定会去搜索的
而User Header Search Paths只有在Always Search User Paths为YES时才会被搜索
7.添加静态库的链接路径:在Xcode的Project -> Edit Active Target -> Build -> Search Path -> Library Search Paths中添加您的静态库目录,比如"$(SRCROOT)/../libs/Release$(EFFECTIVE_PLATFORM_NAME)",$(SRCROOT)宏代表您的工程文件目录,$(EFFECTIVE_PLATFORM_NAME)宏代表当前配置是OS还是simulator
注:静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将Xcode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As设置为"Objective-C++"
8.preprocessor macro
除了上面在出现崩溃后的查找crash的原因,而在程序编写调试的过程经常用到的调试手法为NSLog方法,打印出出错信息。但是,在iPhone 应用发布后,程序运行过程中尽量不要有调试 log 信息输出,因为这样会影响程序运行的效率。因此可以通过宏定义设置,使程序只在 debug 模式下输出对我们有用的信息, release 时不会输出。 具体步骤如下:
1、首先建立一个宏定义文件,文件内容如下:
#if DEBUG
#define debuglog(format, ...) NSLog(format, __VA_ARGS__)
#else
#define debuglog(format, ...)
#endif
2,打开project-->Build setting选项,在下面找LLVM GCC4.2-preprocessing下面的-preprocessor macros 下一级 Debug中设置DEBUG=1 。