如果我的iOS 4 iPhone应用程序在iOS 3.2手机上执行,会发生什么?
我认为它只会崩溃,对吧?如果我开发一款使用iOS 4 SDK的iPhone应用程序,并使其进入应用程序商店,我如何确保它不会被运行旧版iOS的用户下载?如果我的iOS 4 iPhone应用程序在iOS 3.2手机上执行,会发生什么?
在此先感谢您的帮助!
如果您的项目指定4.0作为目标,那么它甚至不会在3.2手机上加载 - 没问题。
当您将应用程序发布到商店时,您可以指定最低的操作系统级别和可接受的设备(例如,您不需要在iPod Touch上查找GPS)。有一个兼容性检查可以防止应用程序在不兼容的情况下被加载。应用程序审批流程(希望)确保您所说的实际上是兼容的。
如果您以某种方式使用设备上不存在的API(因为您在引入该API之前定位了某个版本或出于任何其他原因),那么是的,您将因未知选择器而崩溃。
您可以使用
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30200
检查你的目标是什么版本?第一个数字(3)是主要的修订,第三个数字(2)是次版本。因此显示的检查是3.2。
而不是使用编译时的预处理程序指令来分割你的代码,可以考虑使用运行时检查像respondsToSelector:
,使用针对零NSClassFromString
检查,以确定是否存在类和联弱到新的框架和库使用亚当埃伯巴赫的做法。
这将允许你写一个应用程序,可以住在多个设备上,无需任何代码隔离或单独的二进制文件。
会导致代码膨胀,或者更糟糕,性能更慢/更重? – 2010-06-08 10:59:49
我相信性能的影响是完全可以忽略的......根据你的代码膨胀的定义,我倾向于不同意。这里有几行代码,可以在删除对旧操作系统的支持时删除。 – Jasarien 2010-06-09 11:49:45
respondsToSelector是一个很好的方法,可能比预处理器更好。 – 2010-06-10 22:17:34
目前还没有iOS 3.2手机。 iOS 3.2仅适用于iPad。 iOS 3.0和3.1适用于iPhone。 – 2010-06-08 02:05:56