【问题标题】:run-time vs. compile-time iPhone version check运行时与编译时 iPhone 版本检查
【发布时间】:2011-09-30 20:42:31
【问题描述】:

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

__IPHONE_OS_VERSION_MIN_REQUIRED 只是构建设置中设置的变量吗?

我已阅读下面列出的How to target a specific iPhone version? 和其他相关问题的答案。

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

当您向 Apple 提交代码时,他们是否会为每个 iPhone 版本编译一个版本,并相应地设置 __IPHONE_OS_VERSION_MIN_REQUIRED

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

相关问题:

【问题讨论】:

    标签: iphone ios runtime version compile-time


    【解决方案1】:

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

    更多详情请查看以下网址

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 使用__IPHONE_OS_VERSION_MAX_ALLOWED检查xcode编译器版本。如果 Xcode 版本不够最新,将无法编译。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-05
        • 1970-01-01
        • 2020-01-07
        • 1970-01-01
        • 2014-11-24
        • 1970-01-01
        • 2011-04-05
        • 2012-03-16
        相关资源
        最近更新 更多