如何在我的iPhone应用程序中支持iOS 4.X SDK和iOS 5 SDK?

我正在编写一个iPhone应用程序,我希望在这个时间点支持最大的用户群(尽可能less的痛苦),所以我决定将IOS 4.3+作为目标用户的一个好的子集。

我开始在XCode 4.2中工作,但是当我意识到项目模板已经改变,并且所有东西似乎都与故事板,ARC等交织在一起时,我又回到了XCode 4.1。

我已经build立了我的应用程序,我真的想在装有iOS5的设备上testing。 当我尝试使用它时,只要单击Organizer / XCode中的“用于开发”,就会收到此消息:

在这里输入图像说明

该项目的构build设置如下所示:

在这里输入图像说明

我的问题是这样的:我如何获得这个应用程序,内置在XCode 4.1,在iOS 4.3和iOS 5手机上运行?

iOS SDK是不是向后兼容? 我来自Android开发,其中一个不到当前的SDK将通常工作在一个新的SDK – 在iOS世界这是不同的? 如果是这样,通常如何处理?

任何方向我应该如何进行将不胜感激。

你可以继续在Xcode 4.2中打开你的应用程序,它仍然可以工作。 从Xcode 3.x开始,我一直在做一个特定的应用程序,现在我已经接近完成了,现在正在Xcode 4.2中徘徊。 这不应该是一个问题。 如果你想使用Xcode 4.1,你会好起来的,但是你不会使用iOS 5中引入的新特性。

“跨版本”开发有几个方面需要注意。

  1. testing:您只能testingSDK附带的iOS版本,或者安装在您可能具有的物理设备上的iOS版本。 SDK通常只包含最新的iOS版本,有时也会包含前一版本,但是自Xcode 4发布以来,旧版SDK逐渐被弃用。 这并不是说,与iOS 5 SDK链接的应用程序不能在较早版本的iOS上运行。 这取决于你如何实现新的function。

  2. 特性:为了正确支持较旧版本的iOS,您需要确保在未正确检查新版本OS中引入的类,方法和属性的存在的情况下,不要实现新function。 与Android不同,您不必担心一百万个硬件configuration。 😉

  3. 弱连接:为了支持一个新的function,并且仍然与旧版本的iOS兼容,你需要对你用来实现新function的框架进行弱连接。 您可以在Apple的“弱连接文档”中阅读更多。

  4. 部署目标:阻止应用程序在旧设备上加载的设置称为“部署目标”。 如果你将它设置为3.1.3,那么你的应用程序将在iOS 3.1.3及更高版本上运行。 请记住,如果您没有对正确的版本检查进行编码,您的应用程序可能会中断。

  5. ARC:您可以select在创build项目时启用或禁用自动引用计数。 ARC只在编译时扫描你的程序,而不是在运行时,它不会破坏老版本的操作系统上的应用程序。

您需要最新版本的XCode和iOS SDK才能将您的应用程序安装到iOS 5.0手机上。 这并不意味着相反的情况 – 您的设备上不需要安装在您的计算机上的iOS版本。

希望这可以帮助!

您可以使用最新的SDK,并在项目构build设置中将“IOS部署目标”版本设置为4.3。

Xcode 4.1不支持iOS5,因为Xcode包不包含iOS5 SDK。 因此,您必须返回到Xcode 4.2并将您的项目定位到iOS 4.3(您也可以使用此Xcode版本将其定位到iOS 4.0,但是您将无法模拟它;甚至可以从以下版本下载旧的iOS 4.x包版本Xcode首选项菜单,如果你真的需要在你的设备中模拟它们)。

如果你愿意,你可以select退出ARC,这个select是在你创build项目的时候给你的,所以不要担心; 但是考虑到ARC在编译时只会在运行时发挥它的魔力,所以如果你决定使用这种技术,那么你的向后兼容性就会被保留下来。 最后,如果你不想Storyboard,只需select空的应用程序模板,它只会把你的项目只是基本的文件。 从这个模板你可以创build任何iOS应用程序,这是我通常遵循的方法。