iOS如何限制使用SDK的版本?


比如我以前在 iOS7 版本下开发了一个 APP,一切正常。

后来苹果发布了 iOS8,由于 iOS8 UIAlertController 替代了 UIActionSheet 和 UIAlertView,造成程序在 iOS8 的设备中,UIActionSheet 无法正常使用。

那么问题有四个:

1、我该如何强制 APP 在真机上,以 iOS7 模式运行这个程序?理论上应该可以吧,我记得以前有些程序虽然我用的 iOS7 设备,但是 APP 界面还是 iOS6 的风格,绝对的老程序。

2、如果我更新了代码,用 UIAlertController 修复了问题,那么如果真机是 iOS7 设备,会不会有新的问题出现?比如 iOS7 根本不知道 UIAlertController 是啥导致崩溃?

3、对于一个老程序来说,并没有过多考虑屏幕尺寸的问题, iPhone4、4S、5、5S 都一样处理的,如果这个程序不做修改直接放到 iPhone6 & iPhone6 Plus 上运行,会发生什么情况?可以完美适配么?

4、假如,即使真机是 iOS8 也可以完美运行 iOS7 SDK 写的程序(问题1上说的约束SDK、运行环境?),并且假如我按照 iPhone5S 的尺寸,在 iPhone6 Plus 上也能完美运行。我是不是以后都可以只写 iOS7 SDK + iPhone5S 的代码,然后指望 iPhone6 Plus 自动适配屏幕,然后以后出 iOS9、iOS10 都不会出 BUG ?

iOS 开发新手,跪求大神作答。谢谢。

ios8 ios xcode6 ios7

诸神的黄昏 10 years, 3 months ago
  1. 不能“强制用户”。即使能,也不要这样做。苹果非常鼓励开发者尽快适配新的系统,并抛弃老的系统。倒是可以用旧版本的 SDK 编译打包,如果你一直不升级 Xcode 的话。

  2. 可能会有问题,取决于你用的 API 和类。如果你用的 API 或类标明是 NS_ENUM_AVAILABLE_IOS(8_0) ,那么在 7.0、7.1 系统上就会crash。为了同时适配这两个系统,你可以判断一下系统版本,或者用 respondsToSelector:@selector(……) 判断应该使用新 or 老 API。

  3. 如果不加 LaunchScreen,会进入兼容模式,直接拉伸。效果肯定是不完美的,就是字号、图片全都拉大了,但也凑合能看。最好专门做适配。如果加了 LaunchScreen,则能否适配就看你的实现方式了。

  4. 不要想了。以新系统为主,兼容旧系统为辅。

yoki君_ answered 10 years, 3 months ago

Your Answer