9

[[UIDevice currentDevice] systemVersion]运行时(例如)和编译时(例如检查)之间有什么区别__IPHONE_OS_VERSION_MIN_REQUIRED?你什么时候应该在另一个之上?

只是__IPHONE_OS_VERSION_MIN_REQUIRED在构建设置中设置了一个变量吗?

我已阅读如何定位特定 iPhone 版本的答案?以及下面列出的其他相关问题。

但是,我刚刚注意到,__IPHONE_OS_VERSION_MIN_REQUIRED = 30200当我使用 Xcode 4 在 iPhone (4.3.1) 上构建和运行时。为什么?

当您将代码提交给 Apple 时,他们是否会为存在的每个 iPhone 版本编译一个版本,并进行__IPHONE_OS_VERSION_MIN_REQUIRED相应设置?

这样,您可以检查__IPHONE_OS_VERSION_MIN_REQUIRED并知道运行代码的 iOS 版本。

相关问题:

4

3 回答 3

9

__IPHONE_OS_VERSION_MIN_REQUIRED确实只是一个构建设置,您可以在预处理器中使用它来在编译之前修改代码。不,Apple 不会为每部 iPhone 编译您的代码。他们不能,因为你没有给他们代码。例如,您可以使用编译时检查来确定是否需要编译代码以模拟旧操作系统版本中的新功能。但是,您使用运行时版本检查来确定您应该使用该功能的内置版本还是模拟版本。

例如,在 4.0 中添加了 iAd。您目前支持 4.0 及更高版本,但计划在未来添加对 3.2 的支持。您编写代码以在旧版本中显示其他广告,使用运行时检查来确定您是否应该使用 iAds 或其他,但您不希望它出现在任何版本中,直到应用程序的其余部分为 3.2 做好准备,因为它会使您的应用程序更大。您使用编译时检查,以便预处理器将该代码排除在您的版本之外。通过使用最低版本宏,您可以通过更改最低版本构建设置轻松地将代码添加到您的版本中。

于 2011-07-08T03:39:54.090 回答
4

是的,__IPHONE_OS_VERSION_MIN_REQUIRED只是“构建设置”下“iOS 部署目标”的值。确保选择了正确的目标,而不是项目。

并且,__IPHONE_OS_VERSION_MAX_ALLOWED对应于“Base SDK”构建设置。

于 2011-07-08T14:10:03.420 回答
0

开发人员将使用的编译和运行时间或编程词。所以编译时间最好的例子是代码的编写时间,比如导入语法和声明属性和方法。而 ARC 是编译时间编程。而开发者编写代码后要执行的程序来到RUNTime,称为runtime。在这段时间内,代码将被编译,并且将面临运行时错误,如程序崩溃和类似关闭程序的意外行为。

请找到以下网址了解更多详情

http://pc.net/helpcenter/answers/compile_time_vs_runtime

于 2015-07-22T06:34:19.500 回答