何时使用“#if __IPHONE_OS_VERSION_MIN_REQUIRED> x”?

时间:2012-11-16 01:42:22

标签: objective-c ios

This question解决了如何有条件地包含基于iOS版本的代码。但它是如何运作的?

假设我在Xcode 4.5.2中将iOS Deployment Target设置为3.2。在我的代码中,我添加了一些#ifdef语句:

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_4_0
  // Some iOS 4+ code
#endif

如果我在3.2设备上运行代码,此代码将不在那里,但如果我在4.3设备上运行它,它会,对吧?这是怎么发生的?或者我误解了这里发生了什么?

1 个答案:

答案 0 :(得分:4)

这是一个编译时检查,因此它将在任何iOS版本上创建相同的行为。由于部署目标小于4.0,因此if语句中的代码将无法在任何设备上运行。

如果您想要所描述的行为,则需要进行运行时检查。您可以在链接的线程中看到如何执行此操作的示例。