iOS 4通常向后兼容?

问题描述:

我有以下问题,在不久的将来我需要为iPhone编写几个不是很复杂的应用程序。我目前不拥有iPhone,所以我打算购买一个用于测试目的。简而言之,iPhone 4允许我测试为旧版ios版本编写的应用程序吗?任何陷阱?或者我是否必须购买旧的手机/ ipad才能正确进行测试?iOS 4通常向后兼容?

是,执行正确的测试,你将需要测试你是支持个人设备上。该文档将告诉您,如果您使用的框架/ API在较早的iOS版本中受到支持。恐怕会有一些主观的答案,因为我确信一些应用程序在模拟器测试的许多版本中运行得很好。在考虑向后兼容性时(需要的速度,内存使用情况,API等),有许多因素需要考虑。你说你的应用程序“不是很复杂”,所以你可能会没事。我会在尽可能多的设备上测试您的应用程序。

我还应该区分“它会编译”和“它是否按预期执行”之间的区别。您可以使用xcode通过定位和旧版本来测试应用程序是否兼容。在特定设备上进行测试时,应用程序是否会按需运行。

+1

一般来说,我的理念是不公布对操作系统版本或设备类别的支持,除非我已经对它们进行了测试。有许多微妙的错误只有在旧版硬件或操作系统版本上运行时才会暴露出来。例如,哪个弱链接框架可以保证针对4.x SDK构建的内容不会在3.x操作系统上运行,因此我总是需要在旧设备上进行测试以查看是否有任何内容在启动时中断。 – 2011-03-02 16:46:10

iPhone通常不向后兼容。有时候会添加方法,属性,类等,或者老版本会被弃用。 对于测试,我建议您有几个设备具有不同的iOS版本,具体取决于您想要发布的目标iOS版本。

同时检查了iOS Reference Library:因为当它是可用

+0

仅仅因为某个方法被弃用并不意味着使用它的应用程序的旧版本的SDK将不再运行在新的操作系统版本上。事实上,Apple认识到用于构建应用程序的SDK版本,甚至使用兼容模式,以便应用程序在旧版操作系统版本中依赖的错误仍然呈现给它们,以便它们不会在新操作系统中崩溃。例如,依赖于2.0错误的应用程序,其中'+ imageNamed:'返回的过度保留的UIImage不会在3.0上崩溃,因为操作系统可以识别这些较旧的应用程序。 – 2011-03-02 16:41:02

它可以让你测试的对象为较旧版本的iOS应用程序,是在“可用性”的每个功能等指出。

然而,对于像第一代iPhone/iPod touch这样的老式iDevices的性能差异相当重要。因此,如果您的应用程序需要昂贵的计算或类似的东西,我建议您购买旧的旧设备,以获得这一代硬件性能的感受。

注意,如果你需要确保你将要开发可以运行在很老的设备/ IOS版本的应用程序,你也许需要没有一些可可类和方法需要较新的iOS

+0

在那些较旧的型号上,速度较慢的处理器并不像较小的内存那么大。内存管理对于3g及以上型号来说是一项重大的事情。从3gs一代开始,这只是一个公平的大事。 – 2011-03-02 12:53:14

的版本做

如果您购买了iPhone 4用于测试目的..您正在测试市场上最新的iPhone,这并不意味着您的应用程序已准备好自动定位到低端设备。让我们来深入了解一下:如果您设计的应用程序必须看起来非常华丽并且可以在iPhone 4上使用,那么您可能会使您的应用程序兼容Retina显示。这就像玩960x640分辨率的屏幕一样。

现在,如果你计划目标的低端设备如iPhone 3GS,那么所有你要做的就是减少一半图形的资产规模,为iPhone 3GS的分辨率320x480是

这就是它!从外观和感觉的角度来看,您的应用程序也适用于低端设备。

现在,我们从部署的角度来看。如果你的SDK是4.2.1,而你的目标是运行3.3的设备,那么你所要做的就是确保你不使用iOS 4.2中引入的最新库/类。1,因为它们不适用于在iOS 3.3上运行的设备。如果你照顾这部分,你的应用几乎可以发货了。

从市场的角度。我看到所有优秀的应用程序都将其部署目标设置为iOS 4.0或更高版本。这意味着,他们只针对运行iOS 4.0或更高版本的设备。

我认为,在iPhone 4设备上运行成功的测试周期后,您可以尝试在低端iPhone模拟器中进行构建。 :)

您不能在iPhone 4上运行iOS 3,因此您必须购买单独的设备。

但是,如果它是一个新的应用程序,我不会考虑使它与iOS3兼容。大多数用户已经升级到iOS4。当你的应用程序在商店中时,运行iOS3的用户将会减少。

当然,这会消除像0,5%的潜在客户。但是如果您只能从运行iOS3的0.5%客户那里获得10美元的收入,那么您不会购买100美元的其他设备。而且你必须再次测试你的整个应用程序,这将花费大量的时间。

所以你应该考虑放弃对iOS3的支持。