【问题标题】:iPhone SDK Compatibility inc use of __IPHONE_OS_VERSION_MIN_REQUIREDiPhone SDK Compatibility inc 使用 __IPHONE_OS_VERSION_MIN_REQUIRED
【发布时间】:2011-06-23 12:36:59
【问题描述】:

我搜索了包括 iOS SDK 兼容性指南在内的所有内容,但无法得到解释。

我明白:

  • 部署目标是最早的操作系统 应用可以运行的版本
  • Base SDK 是它将成为的 SDK 使用和其特征编译 如果运行时设备可以使用 支持他们

我正在努力解决的是如何在编译时修复 __IPHONE_OS_VERSION_MIN_REQUIRED 并且设备的操作系统仅在运行时才知道时使用。所以我提交的代码编译总是一样的。

还是自动编译多个版本?

谁能解释一下?

非常感谢,

克里斯。

【问题讨论】:

    标签: iphone ios sdk compatibility deprecated


    【解决方案1】:

    IPHONE_OS_VERSION_MIN_REQUIRED 是一个定义 - 因此,虽然您的部署目标可能很低,但如果您的应用要与多个 iOS 版本高度兼容,您可能会使用一些重要的已弃用功能。

    您说设备的操作系统仅在运行时才知道是正确的。根据您的项目设置,Apple 将使用应用商店中的这些信息来确保拥有正确设备的用户可以访问您的软件。据我所知,没有创建多个版本 - 如果您使用该定义来充分利用旧 iOS 版本,您提交的代码将看起来是动态的。

    您可能还会发现这很有用:

    How to target a specific iPhone version?

    【讨论】:

    • 感谢@Krypton 和@Konrad。上面的链接浮动使用 [[[UIDevice currentDevice] systemVersion] floatValue] 的选项对我有用。我还使用了 respondsToSelector:@selector 作为 distanceFromLocation。
    • 听了太棒了 :) 如该主题链接所述,请注意流氓浮点值。
    【解决方案2】:

    你说得对,__IPHONE_OS_VERSION_MIN_REQUIRED 在编译时是固定的。如果您为不同的平台和版本编译应用程序,这些内容和宏会变得很有用。因此,如果您要为 iOS 3.0 和 iOS 4.0 编译一个版本的应用程序,您可以使用 __IPHONE_OS_VERSION_MIN_REQUIRED 在编译时从您的 iOS 3.0 版本中删除所有 iOS 4.0 代码。

    由于 AppStore 强制您使用一些最新的 SDK 版本,因此即使您面向 3.0 设备,您也必须使用 4.0 SDK。 __IPHONE_OS_VERSION_MIN_REQUIRED 仅在使用旧版 SDK 时才有用。由于您只能将部署目标设置为较低版本,因此您必须在运行时检查 iOS 版本。

    您可以使用here描述的方法在运行时检查iOS版本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      相关资源
      最近更新 更多