Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.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/7/arduino/2.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“Active SDK”版本?_Iphone_Xcode - Fatal编程技术网

我应该使用哪个iPhone“Active SDK”版本?

我应该使用哪个iPhone“Active SDK”版本?,iphone,xcode,Iphone,Xcode,截至2008年12月的iPhone SDK允许我在构建应用程序时选择3个版本:2.0、2.1、2.2。-我将忽略下面的2.1 我的假设: 2.2具有比2.0更多的可用API函数, 2.2已经修复了2.0以来的错误, 2.2在构建和运行方面与2.0向后兼容, 如果我使用SDK 2.0构建,我的应用程序将在iPhone 2.2上运行, 如果我使用SDK 2.2构建,我的应用程序将无法在iPhone 2.0上运行。 我认为使用最早的版本来构建应用程序是最好的,这样它就可以在运行较旧操作系统的iPhon

截至2008年12月的iPhone SDK允许我在构建应用程序时选择3个版本:2.0、2.1、2.2。-我将忽略下面的2.1

我的假设:

2.2具有比2.0更多的可用API函数, 2.2已经修复了2.0以来的错误, 2.2在构建和运行方面与2.0向后兼容, 如果我使用SDK 2.0构建,我的应用程序将在iPhone 2.2上运行, 如果我使用SDK 2.2构建,我的应用程序将无法在iPhone 2.0上运行。 我认为使用最早的版本来构建应用程序是最好的,这样它就可以在运行较旧操作系统的iPhone上运行

但是如果我用2.0构建我的应用程序,它是否有丢失某些东西的风险?可能是一些速度更快或更好的UI元素。但也许2.0和2.2之间没有太大的区别,甚至不用担心它

所以我的问题是:我应该选择哪个SDK

我可以使用最早的SDK构建,以拓宽我的目标市场。 始终使用最新的SDK,这样我的应用程序就可以从改进中获益,但代价是可能会降低我的市场份额。
如果答案很明显,为什么我有选择

我选择选项1—将其编译为2.0。这就是我们为应用程序所做的。仍然有很多人在运行旧的2.0操作系统,如果你编译到2.2,你的应用程序将无法在他们的设备上运行


也就是说,如果你开发你的应用程序时遇到了一个bug,并且发现它已经在以后的固件版本中修复了,除非有解决办法,否则你可能没有太多的选择。每个新版本中都添加了一些新功能,尽管我不知道这些功能在API级别上的完整列表。

您可以使用iPhone OS 2.2 SDK,仍然可以为iPhone OS 2.0编译;您执行此操作的方式与Mac OS X相同。您使用的SDK确定要从中使用API的操作系统的最新版本,而您使用的部署目标确定要在其上运行的操作系统的最新版本。这两项通常都应该在Xcode中的项目级别设置


因此,您可以根据iPhone OS 2.2 SDK构建软件,并在安装了2.2或更高版本的设备上运行时,使用2.2功能。但您可以将其部署目标设置为2.0,并且在安装了2.2之前版本的操作系统的设备上运行时不使用2.2功能,您的应用程序应该可以正常工作。

在我的测试中,如果您使用2.0,则无法使用2.1中显示的应用程序标记功能,因此您可能至少需要使用该级别


Tim

我能够在2.0版本中使用徽章功能。文档中说UIApplication.ApplicationOnBadgeNumber在iPhone OS 2.0及更高版本中可用。或者你指的是其他东西?请注意,3.0中的一些变化至少与测试版中的2.0应用程序不兼容。虽然马克的建议很好,但我认为这并不像最普通的表示法那么简单。你的答案真的应该是这里公认的答案,它绝对是最好的!即使是长期的开发人员也缺乏这种知识。正如您所暗示的,如果您在运行时而不是在编译时动态地决定使用哪些功能,那么您可以使用2.2功能,并且仍然在2.0上运行,只是不要尝试在那里使用这些功能。我们同样使用10.5/10.6功能,但仍然在10.4上运行。@Mecki:那么本质上,您构建了一个包含N个代码路径的应用程序,或者每个操作系统版本启用/禁用功能,或者针对不同版本以不同方式实现它们?哎呀…但谁说向后兼容很容易@博加蒂尔:不管怎样。您可以决定,只有当操作系统>10.5时,功能A才起作用。所以你有10.5/10.6,这个功能有效,你有10.4,它没有。或者,您可以提供其他代码;在10.5/10.6中,视图会随着漂亮的动画而改变,在10.4中,它只是交换,没有功能损失,只是看起来不那么漂亮。通常,它只是一个if,检查操作系统版本,然后做这个或那个,然后做那个,要么什么都不做,要么是一条不受支持的消息,要么是一个不太优雅但功能相当的替代方案。