是否有一个预处理器令牌可用于在构建时检测任何iPhone设备或模拟器?我目前正在使用:
#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
// This is an iPhone build
#endif
这是推荐的方法还是有更好的方法?我更喜欢内置的宏,即由编译器定义,而不是我必须包含的SDK头文件。
我现在并不关心区分iPhone OS版本,但是如果有一个Apple文档页面详细说明了所有相关的宏,当它们被定义和未定义时,我会很感激它的链接作为我的到目前为止,搜索工作已经缩短。
谢谢!
答案 0 :(得分:13)
从this site我们发现您需要TARGET_OS_IPHONE
#if TARGET_OS_IPHONE
//Do iPhone stuff
#else
//Do Mac stuff
#endif
答案 1 :(得分:8)
您要查找的文件是TargetConditionals.h
,它定义了您感兴趣的所有宏。您可以在每个版本的SDK中找到它,例如2.2 SDK的以下路径:< / p>
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.sdk/usr/include/TargetConditionals.h
答案 2 :(得分:2)
如果您的代码在iPhone和桌面上运行,则可以使用TARGET_OS_IPHONE
来确定目标操作系统是否是任何版本的iPhone OS。还有TARGET_IPHONE_SIMULATOR
,仅在为模拟器构建应用程序时定义。它们仍然在头文件中定义,但我希望有帮助!