【问题标题】:Built-in preprocessor token to detect iPhone platform内置预处理器令牌来检测 iPhone 平台
【发布时间】:2013-01-15 03:00:55
【问题描述】:

是否有一个预处理器令牌可用于在构建时检测任何 iPhone 设备或模拟器?我目前正在使用:

#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
    // This is an iPhone build
#endif

这是推荐的方法还是有更好的方法?我希望宏是内置的,即由编译器定义,而不是由我必须包含的 SDK 头文件定义。

我现在并不关心区分 iPhone OS 版本,但如果有一个 Apple 文档页面详细说明了所有相关宏以及它们何时定义和未定义,那么我会很感激一个指向它的链接作为我的到目前为止,搜索还不够。

谢谢!

【问题讨论】:

    标签: iphone preprocessor


    【解决方案1】:

    this site我们发现你需要TARGET_OS_IPHONE

    #if TARGET_OS_IPHONE
    //Do iPhone stuff
    #else
    //Do Mac stuff
    #endif
    

    【讨论】:

      【解决方案2】:

      您要查找的文件是TargetConditionals.h,它定义了您感兴趣的所有宏。您可以在每个版本的 SDK 中找到它,例如 2.2 SDK 的以下路径:

      /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.sdk/usr/include/TargetConditionals.h
      

      【讨论】:

      • 谢谢,我最初没有意识到 TargetConditionals.h 存在于 Mac OS X SDK 和 iPhone SDK 中。
      【解决方案3】:

      如果您有在 iPhone 和桌面上运行的代码,您可以使用TARGET_OS_IPHONE 来确定目标操作系统是否是任何版本的 iPhone 操作系统。还有TARGET_IPHONE_SIMULATOR,仅在为模拟器构建应用程序时定义。它们仍然在头文件中定义,但我希望能有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-09
        • 1970-01-01
        • 2010-11-10
        • 2011-04-15
        • 1970-01-01
        • 2011-05-16
        • 2011-04-08
        相关资源
        最近更新 更多