编写支持iOS 3.1.3和iOS 4.x的iOS应用程序时的陷阱

Gor*_*tch 6 backwards-compatibility ios

我想写一个可以在iOS 3.1.3到iOS 4.1上运行的应用程序.我知道如何设置部署目标和基本SDK.

在阅读Apple文档之后,它严重依赖于检查类是否可用和/或实例是否响应特定选择器.

现在我的问题:

  1. 如果Apple从3.1.3到4.x上课,会发生什么?当只检查类名时,它也可以在iOS 3.1.3上使用吗?所以在这个版本上我将使用私有API,我不想要.你会怎么检查?这真的是一个问题,还是我担心太多?
  2. 您还会使用由iOS版本定义的预处理器符号吗?
  3. 我应该选择armv6或armv7的架构?我认为armv6也可以在armv7上运行,这是正确的吗?
  4. 如果我在我的代码中使用iOS 3.1.3中没有的东西,我可以从编译器获得任何帮助吗?它会被检查吗?
  5. 我应该知道哪些突出的陷阱?

我已经看过WWDC10的会议130"面向未来的应用程序",所以事情已经知道了.

谢谢.

Mos*_*she 1

根据个人经验,可能不会有所有正确的答案,但我会尝试:

  1. 由于私有 API 禁令背后的原因,我认为这不是一个问题。Apple 禁止私有 API(至少部分),因为他们不希望在未来版本的 iOS 中发生幕后变化,因为它现在是公共 API,所以保证会受到支持。

  2. 没有线索。我见过它们用于可以在 OSX 和 iOS 上运行的代码。但我不认为我会这样做,因为 iOS 版本是在运行时检测到的,并且编译实际上只能考虑 OS X 与 iOS,而不是 3.x 与 4 。X。

  3. 使用armv6,这样您就可以支持旧版iOS 设备。用armv7就不会出现这个问题。我相信你是对的,armv7 可以运行为 armv6 构建的应用程序,但我不确定。

  4. 这取决于您的目标部署平台。如果您调用已弃用的代码,您确实会收到警告。

  5. 大概。我在使用 iAd 时遇到了问题,但我不记得具体细节。只需检查现有的类,并记住在必要时进行弱链接和类实例化。