我正在编写一个iPhone应用程序,我希望在这个时间点上支持最大的用户群(以最小的痛苦),所以我决定针对IOS 4.3+将是我的受众的一个很好的用户子集。
我开始在XCode 4.2中工作,但当我意识到项目模板已经改变并且一切似乎都与故事板,ARC等交织在一起时,我又回到了XCode 4.1。
我已经构建了我的应用程序,我实际上想在我的设备上测试,其中安装了iOS5。当我尝试使用它时,我在Organizer/XCode中点击“用于开发”时,会收到以下消息:
项目的生成设置如下所示:
我的问题是:如何让这个内置于XCode 4.1的应用程序在iOS 4.3和iOS 5手机上运行?
iOS SDK是否不向后兼容?我来自Android开发,其中一个低于当前的SDK通常会在一个较新的SDK上工作-这在iOS世界中是不同的吗?如果是,通常是如何处理的?
我将非常感谢任何关于我应该如何进行的指示。
4条答案
按热度按时间hk8txs481#
你可以继续在Xcode 4.2中打开你的应用,它应该仍然可以工作。从Xcode 3.x开始,我就一直在开发一个特定的应用程序,现在我已经快完成了,在Xcode 4.2中沿着。应该没问题如果你想使用Xcode 4.1,你会很好,但你不会使用iOS 5中引入的新功能。
“跨版本”开发有几个方面需要注意。
1.**测试:**您只能在您的SDK中包含的iOS版本上进行测试,或者只能在您可能拥有的物理设备上安装的iOS版本上进行测试。SDK通常只在最新的iOS中提供,有时也包括以前的版本,但自从Xcode 4发布以来,旧版SDK在每个版本中都逐渐被弃用。这并不是说您的应用程序链接到iOS 5 SDK不会在旧版本的iOS上运行。这取决于您如何实现新功能。
1.**功能:**为了正确支持旧版本的iOS,您需要确保不会在没有properly checking for the existence of classes, methods, and properties that were introduced in the newer versions of the OS的情况下实现新功能。与Android不同,你不必担心一百万的硬件配置。;-)
1.**弱链接:**若要支持新功能,同时仍与旧版本的iOS兼容,您需要对用于实现新功能的框架进行弱链接。您可以在Apple文档中阅读有关弱链接的更多信息。
1.**部署目标:**阻止应用加载到旧设备上的设置称为“部署目标”。如果您将此设置为3.1.3,则您的应用将在iOS 3.1.3及更高版本上运行。请记住,如果您没有编写正确的版本检查代码,您的应用程序可能会崩溃。
1.**ARC:**您可以在创建项目时选择启用或禁用自动引用计数。ARC只在编译时扫描你的程序,而不是在运行时,它不会在旧版本的操作系统上破坏应用程序。
bd1hkmkf2#
您需要最新版本的XCode和iOS SDK才能将应用安装到iOS 5.0手机上。这并不意味着反过来也是正确的--你不需要在你的设备上安装与电脑上安装的iOS版本相同的iOS。
9jyewag03#
您可以使用最新的SDK,并在项目构建设置中将“IOS部署目标”版本设置为4.3。
daolsyd04#
XCode 4.1不支持iOS5,因为Xcode包不包含iOS5 SDK。所以你必须回到Xcode4.2,并将你的项目针对iOS4.3(你也可以用这个Xcode版本针对iOS4.0,但你将无法模拟它;如果你真的需要在你的设备上模拟它们,你甚至可以从Xcode首选项菜单下载旧的iOS 4.x包版本)。
如果你愿意,你可以选择退出ARC,这个选择是在你创建项目的时候给你的,所以不要担心;但是考虑到ARC只在编译时发挥它的魔力,而不是在运行时,所以如果你决定使用这种技术,你的向后兼容性将保持不变。最后,如果你不想使用Storyboard,只需选择Empty应用程序模板,它会简单地将基本文件放入你的项目中。从这个模板中,你可以创建任何iOS应用程序,这是我通常遵循的方法。