内置预处理器标记以检测iPhone平台。

6

有没有一个预处理器标记可以在构建时检测任何iPhone设备或模拟器?我目前正在使用:

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

这是推荐的方法吗?还是有更好的方法?我希望宏是内置的,即由编译器定义,而不是由我必须包含的SDK头文件定义。
我现在不关心区分iPhone OS版本,但如果有一个苹果文档页面详细介绍所有相关的宏以及它们何时被定义和未被定义,则会感激提供链接,因为我的搜索到目前为止没有结果。
谢谢!
3个回答

13

这个网站获得信息,你需要使用TARGET_OS_IPHONE

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

8

您要找的文件是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中都存在。 - Richard Viney

2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接