【问题标题】:Navigating the fragmentation of old/new iOS devices导航旧/新 iOS 设备的碎片
【发布时间】:2011-12-10 01:16:06
【问题描述】:

我很难找到一些关于使用 iOS 5 SDK/XCode 4.2 进行开发以及能够支持旧设备(即 iPhone 3G)的好信息。

基本上我刚刚开始进行 iOS 开发,并且我已经下载了使用 iOS 5 SDK 的 xCode 4.2。我担心的是,我在尝试在我的 iPhone 3G 上运行一个全新的项目以测试兼容性时遇到了一堆麻烦(即armv6 problem)很明显,Apple 希望我们为较新的硬件,但我们有责任为仍在运行旧硬件的应用程序用户提供支持。特别是如果您希望您的应用程序在尽可能多的人手中。

例如,ARC 听起来像是天赐良机,但它不适用于 4.3 以下的 iOS 版本。在我尝试在 iOS5 之前的设备上安装应用程序之前,我在 Storyboards 方面也有很好的体验。

在尝试支持所有 iOS 设备时,是否有任何关于最佳实践的良好信息来源?这仅仅是用户不得不承认是时候购买新 iPhone 的情况了吗?还是在我们追逐长尾之前使用较旧的 SDK 进行开发?这个问题是不是已经在追长尾了?

这让人想起浏览器标准支持碎片的微妙方式。期待听到其他人的想法。

【问题讨论】:

  • 这是一个真正的问题。最好的,最好的,我的意思是 Apple 推荐的,是始终推动并放弃对旧操作系统的支持。您可以在他们自己的应用程序中看到这一点。 iMovie 和所有 iWork 现在仅支持 iOS 5。我不同意这一点,只是因为可以赚钱支持那里的数百万台旧设备。但这就是为什么他们不让事情变得容易......他们不在乎。有很多方法可以解决这个问题,但您必须将设备放在手边进行测试,并避免升级它们。当然,这对小型开发人员来说是一个真正的负担。
  • 当然。您是否知道任何表明旧设备呈下降趋势的信息来源?

标签: iphone ios xcode


【解决方案1】:

您可以在目标的摘要设置中降低部署目标以支持较低的操作系统版本。需要注意的是,代码仍会编译为您安装的最新 SDK。这意味着您不能调用任何方法或使用在您希望支持的最低操作系统版本之后发布的任何功能。如果您确实计划对运行较新版本操作系统的设备使用新方法,则需要用

将它们括起来
if ([<class> respondsToSelector:@selector(methodName)] {

}

确保该方法仅在支持它的设备上运行。

【讨论】:

猜你喜欢
  • 2020-04-19
  • 2018-05-07
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多