运行时与编译时iPhone版本检查

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

__IPHONE_OS_VERSION_MIN_REQUIRED只是在“生成设置”中设置的variables吗?

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

但是,我只是注意到__IPHONE_OS_VERSION_MIN_REQUIRED = 30200当我用Xcode 4构build和运行iPhone(4.3.1)。为什么?

当您将代码提交给Apple时,是否为每个存在的iPhone版本编译版本,并相应地设置__IPHONE_OS_VERSION_MIN_REQUIRED

这样,你可以检查__IPHONE_OS_VERSION_MIN_REQUIRED ,并知道什么是iOS版本正在运行的代码。

相关问题:

  • 如何检查iOS版本?
  • 在运行时检查iOS版本?
  • 如何检查iOS版本是否支持库?

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

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

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

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

编译和运行时间或编程单词将由开发人员使用。 所以编译时最好的例子就是编写代码的时间,比如导入语法,声明合法性和方法,ARC是编译时编程。 在开发人员编写代码之后进入RUNTime将执行该程序称为运行时。 在这个时候,代码将被编译,并将面临运行时间错误,如崩溃的程序和fourseclosures这样的程序意外的行为。

请find下面的url有关更多详细信息

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