BaseSDK & DeploymentTarget
Base SDK设置为当前xcode编译使用的sdk版本,比如”Latest IOS(IOS7.1)″。IOS Deployment Target设置为你所支持的最低的iPhone OS版本,比如” 5.0″。也就是你手机/pad运行本项目的最低版本。即本项目最低运行环境在5.0系统及以上版本。
http://www.shangxueba.com/jingyan/1843726.html
在xcode中又两个地方设置sdk,一个是Development Target,指的是编译后的app可再终端的哪个版本上运行,设置方法如图
另外一个是Base SDK,指的是当前编译所用的SDK版本,设置方法如图
这两个在开发的时候需要注意,比如用xcode5.0默认的设置开发的app是iOS7.0的,想要适配iOS6.1,需要将Development Target改成iOS 6.1,并且将模拟器设置成iOS6.1,再运行程序的话就是在iOS6.1下边运行了,但是如果不设置BaseSDK的话,工程就是基于SDK7.0编译而基于SDK6.1运行,这样极有可能崩溃,比如因tintColZ喎?http:///kf/ware/vc/" target="_blank" class="keylink">vcsr00NTV0rK7tb22+LHAwKOho8v50tS198rUtcTKsbry0ru2qNKqyejWw0Jhc2VTREuhozwvcD4KPHA+u7nKx9aux7DOxNXCtcTA/dfTo6zU2nhjb2RlNS4wz8LQwr2o0ru49rmks8yjrMSsyM+1xERldmVsb3BtZW50IFRhcmdldLrNQmFzZVNES7a8ysc3LjCjrNTaQXBwRGVsZWdhdGUubc7EvP61xGRpZEZpbmlzaExhdW5jaGluZ1dpdGhPcHRpb25zt723qMDvsd/QtMnP0ru+5DwvcD4KPHA+PHByZSBjbGFzcz0="brush:java;">self.window.tintColor = [UIColor redColor];
运行程序,不会出错。现在将Development Target改成6.1,将模拟器改成6.1。
然后运行,编译通过,但是运行崩溃,打印
2014-03-21 09:26:58.253 TestTarget2[77981:907] -[UIWindow setTintColor:]: unrecognized selector sent to instance 0x75728502014-03-21 09:26:58.284 TestTarget2[77981:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIWindow setTintColor:]: unrecognized selector sent to instance 0x7572850'
这是因为程序是在SDK7.0下编译的,tintColor没有问题,但是在SDK6.1下运行,6.1中是没有tintColor的,结果就崩溃了。将BaseSDK改成6.1,再运行,就会编译出错,无法运行
将上边一句改成
#ifdef __IPHONE_7_0 self.window.tintColor = [UIColor redColor];#endif
再运行,完美通过……