【问题标题】:Is there an iPhone equivalent of MAC_OS_X_VERSION_MIN_REQUIRED?是否有相当于 MAC_OS_X_VERSION_MIN_REQUIRED 的 iPhone?
【发布时间】:2010-10-16 01:38:38
【问题描述】:

我想有条件地包含 iPhone 应用程序的代码,具体取决于我正在编译的 SDK 版本。在 Mac OS X 上,有一个 MAC_OS_X_VERSION_MIN_REQUIRED 预处理器宏,它被编译器设置为 MACOSX_DEPLOYMENT_TARGET 构建设置的值。 iPhone 上有类似的吗?

更新:

我在构建设置中将IPHONE_DEPLOYMENT_TARGET 设置为3.0,但Xcode 将-D__IPHONE_OS_VERSION_MIN_REQUIRED=20000-mmacosx-version-min=10.5 传递给GCC。第一个不应该是30000,第二个不应该是-miphoneos-version-min=3.0吗?我做错了什么?

更新 2:

看来我没有做错什么。 __IPHONE_OS_VERSION_MIN_REQUIRED-miphoneos-version-min 在为设备构建时都设置正确——只有在使用 iPhone Simulator SDK 时才会出错。我认为这是模拟器 SDK 中的错误。

【问题讨论】:

  • 如果您为整个项目设置这些,请注意它们可能会在目标级别被覆盖。确保将它们设置在您关心的目标上。
  • 是的——我将这些设置为目标级别。在目标和/或项目级别设置什么似乎并不重要,这些标志保持不变。

标签: iphone cocoa cocoa-touch xcode


【解决方案1】:

【讨论】:

  • 出于某种原因,即使我已将 iPhone 部署目标设置为 3.0,Xcode 仍会提供 GCC -D__IPHONE_OS_VERSION_MIN_REQUIRED=20000。它还通过 -mmacosx-version-min=10.5 而不是 -miphoneos-version-min=3.0,所以看起来有些东西坏了。有什么想法吗?
【解决方案2】:

为每个版本的操作系统定义了预处理器宏。例如,如果定义了__IPHONE_OS_3_0,那么您正在针对 3.0 SDK 构建(或者可能更高版本,我不确定)。

【讨论】:

  • 应该是_IPHONE_3_0(注意:没有_OS),但我不知道。谢谢。如果我可以使用 __IPHONE_OS_VERSION_MIN_REQUIRED 会很好,这样它就可以向上兼容,但是我遇到了 Xcode 问题(请参阅更新)。
【解决方案3】:

对于它的价值,如果不存在这样的宏,一个体面的解决方法是创建 2 个构建目标,并在其中一个中添加构建设置 GCC_PREPROCESSOR_DEFINITIONS,其值类似于 IPHONE_OS_3。然后在你的代码中你可以这样做:

#ifdef IPHONE_OS_3
    [foo thisMethodIsUnderNDA];
#else
    [foo oldSchoolMethod];
#endif

【讨论】:

    猜你喜欢
    • 2010-11-21
    • 2017-01-08
    • 2023-04-04
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多