【问题标题】:Configuring Xcode for iOS5 when latest is iOS6最新为 iOS6 时为 iOS5 配置 Xcode
【发布时间】:2013-05-07 00:52:25
【问题描述】:
我已经发布了一个适用于 iOS6 的应用程序(部署目标:6.1,SDK 6.1),但现在希望制作适用于 iOS5 的应用程序,因为我意识到有多少用户仍然使用 iOS5 来保留旧的原生 Google 地图。我知道我必须删除任何仅限 iOS6 的功能,例如自动布局和UICollectionView,这对我来说是可以的。
我的问题是,在 Xcode 中,我需要配置什么?我是否将部署目标和 SDK 修改为读取 5.x?如果我这样做,Apple Review Board 会拒绝我的应用吗?
我试图避免“如果设备是 iOS6,那么如果设备是 iOS5”,因为在尝试构建时听起来很混乱,所以我决定让整个应用程序 100% 使用 iOS5,以使事情变得更简单.
【问题讨论】:
标签:
xcode
ios5
ios6
backwards-compatibility
【解决方案1】:
如果您的应用程序拥有与我们相同的受众,那么您应该预计大约 35% 左右的人仍在使用 iOS 5。这不仅是因为对地图的执着感,还因为 iOS 6 还没有用于最初的 iPad,而且因为很多人在一切都运行良好的情况下根本不升级。
要让您的应用程序在 iOS 5 下运行,只需更改部署目标即可。在为 iOS 开发时,您总是链接到最新的 SDK,因为:
- 针对较旧的 SDK 构建没有技术优势 —
- Objective-C 调用是完全动态的,因此操作系统可以确定如何路由它们;
-
CGRect、CGPoint、NSRange 等原版 C 结构体的大小从未改变;
- 所有 C API 都是围绕传递引用(如
CGImageRef)而设计的,因此即使下面的内容完全改变,编译代码处理引用的正确方式仍然相同;和
- Apple 仅针对最新的 SDK 测试最新的编译器工具链,您会希望利用所有最新的编译器优化和错误修复。
假设您想利用仅 iOS 6 的功能,您不会测试操作系统的版本,您需要测试该功能是否可用。通常这涉及调用respondsToSelector: 或测试[<feature> class] 是否为非零。