6

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

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

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

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

谢谢!

4

3 回答 3

13

这个网站我们发现您需要TARGET_OS_IPHONE

#if TARGET_OS_IPHONE
//Do iPhone stuff
#else
//Do Mac stuff
#endif
于 2009-07-05T11:43:26.887 回答
8

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

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.sdk/usr/include/TargetConditionals.h
于 2009-07-05T07:14:26.260 回答
2

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

于 2009-07-05T06:22:52.257 回答