Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iPhone应用程序中同时支持iOS 4.X SDK和iOS 5 SDK?_Iphone_Objective C_Ios_Xcode_Ios4 - Fatal编程技术网

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

如何在iPhone应用程序中同时支持iOS 4.X SDK和iOS 5 SDK?,iphone,objective-c,ios,xcode,ios4,Iphone,Objective C,Ios,Xcode,Ios4,我正在编写一个iPhone应用程序,我希望在这一点上支持最大的用户群(以最小的痛苦),因此我决定将IOS 4.3+作为我的受众的一个很好的用户子集 我开始使用XCode 4.2,但当我意识到项目模板发生了变化,一切似乎都与故事板、ARC等交织在一起时,我又回到了XCode 4.1 我已经构建了我的应用程序,实际上我想在安装了iOS5的设备上进行测试。但是,当我尝试使用它时,我在Organizer/XCode中单击“用于开发”后立即收到此消息: 项目的生成设置如下所示: 我的问题是:如何让这个

我正在编写一个iPhone应用程序,我希望在这一点上支持最大的用户群(以最小的痛苦),因此我决定将IOS 4.3+作为我的受众的一个很好的用户子集

我开始使用XCode 4.2,但当我意识到项目模板发生了变化,一切似乎都与故事板、ARC等交织在一起时,我又回到了XCode 4.1

我已经构建了我的应用程序,实际上我想在安装了iOS5的设备上进行测试。但是,当我尝试使用它时,我在Organizer/XCode中单击“用于开发”后立即收到此消息:

项目的生成设置如下所示:

我的问题是:如何让这个内置于XCode 4.1的应用程序同时在iOS 4.3和iOS 5手机上运行?

iOS SDK是否不向后兼容?我来自安卓开发,在安卓开发中,一个不太流行的SDK通常会在一个更新的SDK上工作——这在iOS世界中是不同的吗?如果是这样,这通常是如何处理的


如果您能为我提供指导,我们将不胜感激。

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


希望这有帮助

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


希望这有帮助

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

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

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


如果你愿意,你可以选择退出ARC,这个选择是在你创建项目时给你的,所以不用担心;但是,考虑到ARC只在编译时才运行,而不是在运行时,所以如果您决定使用该技术,将保持向后兼容性。最后,如果你不想要故事板,只需选择空的应用程序模板,它只会将基本文件放入你的项目中。通过此模板,您可以创建任何iOS应用程序,这是我通常采用的方法。

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


如果你愿意,你可以选择退出ARC,这个选择是在你创建项目时给你的,所以不用担心;但是,考虑到ARC只在编译时才运行,而不是在运行时,所以如果您决定使用该技术,将保持向后兼容性。最后,如果你不想要故事板,只需选择空的应用程序模板,它只会将基本文件放入你的项目中。从这个模板你可以创建任何iOS应用程序,这是我通常遵循的方法。

你可以继续在Xcode 4.2中打开你的应用程序,它应该仍然可以工作。从Xcode 3.x开始,我就一直在开发一个特定的应用程序,现在我已经差不多完成了,在Xcode 4.2中快速前进。这不应该是个问题。如果你想使用Xcode 4.1,你会很好,但你不会使用iOS 5中引入的新功能

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

  • 测试:您只能在SDK附带的iOS版本上进行测试,或者只能在您可能拥有的物理设备上进行测试。SDK通常只附带最新的iOS,有时也包括上一个,但自从Xcode 4发布以来,旧的SDK在每个版本中都逐渐被弃用。这并不是说,您的应用程序链接到iOS 5 SDK,不会在旧版本的iOS上运行。这取决于您如何实现新功能

  • 功能:为了正确支持旧版本的iOS,您需要确保在没有新功能的情况下不会实现新功能。与安卓不同,你不必担心一百万的硬件配置

  • 弱链接:要支持新功能并与旧版本的iOS兼容,您需要对用于实现新功能的框架进行弱链接。你可以阅读更多关于这方面的文章

  • 部署目标:阻止应用程序加载到旧设备上的设置称为“部署目标”。如果将其设置为3.1.3,则应用程序将在iOS 3.1.3及更高版本上运行。记住,如果你没有正确的版本检查代码,你的应用程序可能会崩溃

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


  • 你可以继续在Xcode 4.2中打开你的应用程序,它应该仍然可以工作。从Xcode 3.x开始,我就一直在开发一个特定的应用程序,现在我已经差不多完成了,在Xcode 4.2中快速前进。不应该这样