将应用更新到iOS6

Jer*_*emy 11 xcode app-store ios ios6

在Apple Developer论坛上未能找到对此问题的准确回复.

与其他Apple开发者一样,我将升级我们的应用以支持iOS6设备.我已经下载了支持iOS6 SDK的XCode 4.5.

我知道我无法使用此XCode版本将我的应用程序版本提交到应用商店,但是:

  1. 如果我重新编译和使用的6.0部署目标建立一个应用程序,并解决所有已知的问题,例如不赞成的方法等,当苹果发布的GM iOS6的,将任何构建编译和iOS5的设备的工作呢?

  2. 我应该只提交部署目标为5.0的应用程序,还是那些无法在iOS6中运行的应用程序?

  3. 如果我使用新的iOS6功能,我的部署目标应该只是iOS6吗?

(困惑).

ser*_*gio 14

由于这是关于支持多个iOS版本的一个非常通用的问题,并没有涵盖任何iOS6特定的东西(由NDA覆盖),这里是我的答案:

如果我使用6.0的部署目标重新编译和构建应用程序并修复所有已知问题,例如当Apple为iOS6发布GM时弃用方法等,那么任何构建编译和使用iOS5设备吗?

原则上,是的,如果您没有使用任何仅支持iOS6的功能,或者您已正确使用它(请参阅第三个问题的答案).但是,如果您想确保一切正常,那么对运行iOS5/4(或模拟器)的实际设备进行测试几乎是必须的.

目前在iOS版本下运行的东西也有可能在iOS6上中断(这可能发生在添加了一些错误的情况下,但是如果修复了一些错误,并且发生了代码有错误的情况)它本身抵消了前者的影响).所以,测试是国王.(感谢rsswtmr对此的评论).

我应该只提交部署目标为5.0的应用程序,还是那些无法在iOS6中运行的应用程序?

如果您的应用程序不使用任何仅支持iOS6的功能(或者您正确执行,稍后阅读),则可以指定5.0的部署目标; 换句话说,此设置不会破坏与iOS6的兼容性;

如果我使用新的iOS6功能,我的部署目标应该只是iOS6吗?

它可以,但它不是唯一的方法.

如果您将部署目标指定为iOS6,那么您可以在应用程序中自由使用任何仅限iOS6的功能而无需担心.应用程序商店机制会阻止您的应用程序安装在任何旧设备上,您将是安全的.

另一方面,如果您将部署目标指定为iOS5或更早版本,那么您仍然可以在应用程序中使用任何仅限iOS6的功能,但是您应该通过"防护"任何仅使用iOS6的功能来正确支持旧版本的iOS并为iOS5提供后备.

这意味着以下内容:假设您将featureA仅在iOS6上使用; 你能做的是:

  1. 检查该功能是否在运行时可用(例如class respondsToSelector等);

  2. 保护你的代码,#ifdef以便只在可能的情况下编译;

  3. 如果1处的检查失败,请为较旧的iOS版本定义一条出路.

看看有关支持多个iOS版本的这篇文章.