iOS SDK 有着不慢的更新速度 , 每次更新都会有不少新添加的内容和改动 ,如果不做适配 ,可能会导致使用的高版本里的方法,在低版本手机运行时程序崩溃 。所以做好iOS应用的版本适配 , 也是开发过程中比较重要的一项内容 。
在xcode中又两个地方设置sdk,一个是Development Target,指的是编译后的app可再终端的哪个版本上运行,设置方法如图
另外一个是Base SDK,指的是当前编译所用的SDK版本,设置方法如图
高版本的x-code对应的BaseSDK也是高版本的 , 比如当前X-code6.3对应的是iOS SDK8.3 。但市面上用户手里的手机系统版本可能还有 7.0、 7.1等低版本,所以我们必须让我们的应用同时支持低版本 。
修改方法就是 ,在Development Target即第一张图所示位置里面更改支持的最低版本 ,但并不是说仅改这一个值就高枕无忧了。因为此时是用最新的SDK生成app,但却允许在早期版本的系统上运行,所以此时开发者要确认在旧系统上运行app时不能调用那些新的SDK中添加的功能,否则会在运行时出错导致app闪退。下面就介绍一下如何确保app能够在旧的系统上正确运行。
从网上找了个例子:说明的是在iOS7.0和iOS6.1(以及更低版本)之间的适配问题(用的是xcode5.0,里边有6.1和7.0两个版本的sdk),其他版本同样的问题 , 解决办法类似 。
新建一个工程,默认的development target,base sdk以及模拟器的版本都是7.0,在AppDelegate中的didFinishLaunchingWithOptions方法里写下
self.window.tintColor = [UIColor redColor];
然后运行,这样是没有任何错误的。接下来将development target,base sdk以及模拟器的版本都改成6.1(注意默认的xcode是没有6.1的sdk的,需要自己另外导入)。然后运行,就会报错:
也就是说tintColor属性在iOS6.1中根本就没有,在编译时候就会出错。这时候如下加上判断语句也是没有用的,照样报错