导航旧/新iOS设备的碎片化问题

5
我在开发iOS 5 SDK / XCode 4.2时遇到了一些问题,无法支持旧设备,尤其是iPhone 3G。我刚开始接触iOS开发,已经下载了使用iOS 5 SDK的xCode 4.2。我的担心是,在iPhone 3G上运行全新项目时遇到了很多问题,以测试兼容性(即armv6问题)。显然,苹果希望我们为更新的硬件构建应用程序,但是当涉及到支持仍在使用旧硬件的应用程序用户时,我们有责任。特别是如果您希望您的应用程序尽可能地传播。例如,ARC听起来像是一个神器,但它不适用于低于4.3版本的iOS。我对Storyboards也有良好的体验,直到我尝试在iOS 5之前的设备上安装该应用程序。
有没有关于支持所有iOS设备的最佳实践的好信息来源?这只是用户必须坦白承认是时候换新iPhone了吗?还是开发旧的SDK,直到我们追赶长尾?这个问题已经在追赶长尾了吗?
这在某种程度上让人想起浏览器标准支持的碎片化。期待听到其他人的想法。

这是一个真正的问题。最好的方法,也就是苹果推荐的方法,是始终向前推进并停止支持旧的操作系统。你可以在他们自己的应用程序中看到这一点。iMovie和所有的iWork现在只支持iOS 5。我不同意这种做法,仅仅因为还有成千上万的旧设备需要支持。但这就是他们不愿意简化的原因...他们不关心。虽然有办法解决,但你必须要保留设备进行测试,并避免升级它们。对于小型开发者来说,这确实是一个真正的负担。 - Kenny Winker
当然。您知道有哪些信息来源表明旧设备的趋势性下降吗? - Chris
1个回答

2

您可以在目标项目的摘要设置中降低部署目标以支持较早的操作系统版本。但请注意,代码仍然会编译为您安装的最新SDK。这意味着,您不能调用任何在您希望支持的最低操作系统版本发布之后发布的方法或使用任何功能。如果您计划在运行较新操作系统版本的设备上使用新方法,则需要将它们包含在 <#ifdef> 指令中。

if ([<class> respondsToSelector:@selector(methodName)] {

}

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


1
苹果公司在这里有一些类似技术的文档:http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/cross_development/Using/using.html - Kenny Winker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接