#if __IPHONE_4_0会在iPad上运行吗?

时间:2010-10-17 21:15:30

标签: iphone xcode ipad

此检查是否适用于iPad和iPhone?我想我只是对在iPad上使用“iPhone”一词感到困惑。我还需要检查iPad OS版本,还是宏指向一般的iOS版本。

#if __IPHONE_4_0
// Do stuff
#elif __IPHONE_3_0
// Do 3.0 stuff
#endif

2 个答案:

答案 0 :(得分:8)

__IPHONE_3_0之类的问题是即使定位到其他iOS版本也会定义它们;它们是版本标识常量,而不是标识目标iOS版本的常量。使用__IPHONE_OS_VERSION_MIN_REQUIRED

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_4_0
#elif __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_0
#else
#endif

甚至:

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 40000
#elif __IPHONE_OS_VERSION_MIN_REQUIRED >= 30000
#else
#endif

解决“How to target a specific iPhone version?__IPHONE_OS_VERSION_MAX_ALLOWED评论中提到的错误,在有限的情况下也可能有用。

而且,是的,应用程序运行的设备无关紧要。这些常量由编译器定义,并且不存在于设备上。预处理器运行后,不会留下任何宏。虽然设备本身存在差异,但iPhone和iPad都运行iOS,这就是你真正的目标。

答案 1 :(得分:1)

您发布的代码是编译器指令。这意味着它不能在iPad或iPhone上运行。它是在您构建应用程序二进制文件时处理的。顺便说一句,如果您正在为iPad构建,那么您构建的是3.2而不是3.0或4.0。

如果您使用3_2或4_2而不是3_0或4_0,它应该可以使用。

祝你好运。