【问题标题】:Is iOS 4 generally backwards compatible?iOS 4 通常向后兼容吗?
【发布时间】:2011-03-02 12:33:34
【问题描述】:

我有以下问题,在不久的将来我需要为 iPhone 写一些不太复杂的应用程序。我目前没有 iPhone,所以我打算购买一个用于测试目的。简而言之,iPhone 4 是否允许我测试为旧 ios 版本编写的应用程序?有什么陷阱吗?还是我必须购买旧手机/ipad 才能正确进行测试?

【问题讨论】:

    标签: iphone ios


    【解决方案1】:

    是的,要执行正确的测试,您需要在您支持的各个设备上进行测试。文档将告诉您旧 iOS 版本是否支持您使用的框架/API。恐怕这里会有一些主观的答案,因为我确信一些应用程序最终在经过模拟器测试的许多版本中运行得很好。在查看向后兼容性时需要考虑许多因素(所需的速度、内存使用情况、API ......)。您说您的应用程序“不是很复杂”,所以您可能会没事。我会在尽可能多的设备上测试您的应用程序。

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

    【讨论】:

    • 一般来说,我的理念是不宣传对操作系统版本或设备类别的支持,除非我已经对其进行了测试。有许多微妙的错误可能只有在旧硬件或操作系统版本上运行时才会暴露。例如,要保证针对 4.x SDK 构建的东西可以在 3.x 操作系统上运行,哪些框架要弱链接并不明显,所以我总是需要在旧设备上进行测试,看看启动时是否有任何问题。
    【解决方案2】:

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

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

    当然,这会移除大约 0.5% 的潜在客户。但是,如果您只能从运行 iOS3 的 0.5% 的客户那里获得 10 美元的收入,那么您不想以 100 美元的价格购买另一台设备。而且您必须再次测试整个应用程序,这将花费大量时间。

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

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

        它将允许您测试针对旧 iOS 版本的应用程序,是的。

        然而,与第一代 iPhone / iPod touch 等旧 iDevice 的性能差异非常显着。因此,如果您的应用程序需要昂贵的计算或类似功能,我建议您也购买一台较旧的二手设备,以感受该代硬件的性能。

        请注意,如果您需要确保您将要开发的应用程序可以在非常旧的设备/iOS 版本上运行,您可能需要不使用一些需要更新版本 iOS 的可可类和方法

        【讨论】:

        • 在那些较旧的型号上,较慢的处理器并没有较小的内存量那么大的限制。内存管理在 3g 和更早的型号上非常重要。从 3gs 一代开始,这只是一件大事。
        【解决方案5】:

        如果您购买 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 模拟器中构建。 :)

        【讨论】:

          【解决方案6】:

          iPhone 通常不向后兼容。有时会添加方法、属性、类等,或者不推荐使用旧的。 为了进行测试,我建议您根据要发布的目标 iOS 版本使用不同 iOS 版本的设备。

          还要检查iOS Reference Library:在每个功能的“可用性”等下注明自何时可用

          【讨论】:

          • 仅仅因为某个方法已被弃用并不意味着使用该方法的使用旧版本 SDK 构建的应用程序将不再在新的操作系统版本上运行。事实上,Apple 识别用于构建应用程序的 SDK 版本,甚至使用兼容模式,以便应用程序在旧操作系统版本中依赖的错误仍然呈现给他们,因此它们不会在新操作系统中中断。例如,依赖于 +imageNamed: 返回过度保留的 UIImage 的 2.0 错误的应用程序不会在 3.0 上崩溃,因为操作系统可以识别这些旧应用程序。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-28
          • 2012-02-12
          • 2018-01-19
          • 1970-01-01
          • 2017-07-11
          相关资源
          最近更新 更多