IOS开发之不同版本适配问题3(#ifdef __IPHONE_7_0 BaseSDK Development Target)

继续之前的文章

在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运行,这样极有可能崩溃,比如因tintColor属性找不到而崩溃。所以调试的时候一定要设置BaseSDK。

还是之前文章的例子,在xcode5.0下新建一个工程,默认的Development Target和BaseSDK都是7.0,在AppDelegate.m文件的didFinishLaunchingWithOptions方法里边写上一句

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 0x7572850
2014-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

再运行,完美通过……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值