3

我为 iOS 部署目标 3.2 开发了一个 iPhone 应用程序。

但我的客户改变了主意,希望该应用程序可用于 iOS 3.1。因此,我将 iOS 部署目标设置为 3.1 并将基本 SDK 保留为 4.0,但一切都可以正常编译,而我确定我只使用 iOS 3.2 中引入的方法和类。

如何识别无法在 3.1 设备上运行的代码?(并可能导致应用程序崩溃)

我的问题是我有一个 iPhone 设备(安装了 4.0.2)并且 Xcode 不再提供 SDK 3.1.x。

4

3 回答 3

2

亨利,这可能会对您有所帮助:将旧的 xcode 和 sdk 与新的并行安装。可以在此处找到旧 SDK 的链接:http: //iphonesdkdev.blogspot.com/2010/04/old-versions-of-iphone-sdk.html

希望,这就是你想要的。

于 2010-09-22T03:04:02.833 回答
0

你也检查过警告吗?如果找不到选择器,那么它将编译,但可能会给您一个警告,提示您找不到匹配的选择器或类似的东西。你说你确定你用过 >=3.2 的东西。你不知道它们是什么吗?

于 2010-09-07T11:06:52.150 回答
0

您可以确定您的应用程序将在运行 3.1 的设备上运行的唯一方法是在运行 3.1 的设备上对其进行测试。对旧(iPhone 3GS 之前)硬件的支持也是如此。我在商店中看到太多应用程序,这些应用程序显然只在较新的设备上进行了测试,并且在较旧的硬件上陷入困境或内存不足。如果您不支持该硬件,很好,只需适当地设置您的 Info.plist 以使其不适用于这些设备。

无论您认为自己检查了更新的方法和类多么彻底,您仍然会遇到一些微妙的问题。例如,您可能需要也可能不需要弱链接某些框架,否则即使您不使用任何新的 API,您的应用程序也会在旧操作系统上崩溃。

旧型号的 iPod touch 在 eBay 上很便宜,如果安装了 4.0,可以降级到旧的操作系统版本。或者,您可以找到设备运行较旧操作系统版本的人,并向他们发送应用程序的临时构建以进行测试。这是不太理想的,因为您需要将 Instruments 连接到设备,以确保内存使用不会太接近旧设备上的危险区域。

我很抱歉,但这是唯一可以确定的方法。正如另一位开发人员对我说的那样,“如果您尚未在特定的操作系统版本或设备上对其进行测试,请考虑您的应用程序不会在那里运行。”

于 2010-09-07T14:31:34.237 回答