何时使用“#if __IPHONE_OS_VERSION_MIN_REQUIRED > x”?
Posted
技术标签:
【中文标题】何时使用“#if __IPHONE_OS_VERSION_MIN_REQUIRED > x”?【英文标题】:When to use "#if __IPHONE_OS_VERSION_MIN_REQUIRED > x"? 【发布时间】:2012-11-16 01:42:21 【问题描述】: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 设备上运行它,它会存在,对吗?这是怎么发生的?还是我误解了这里发生了什么?
【问题讨论】:
您的目标是什么?您是想根据使用不同版本的 Xcode 编译不同的代码,还是尝试为单个应用程序编写代码,使其能够在不同版本的 iOS 设备上正常运行? 阅读一些 SDK 代码。由于人们会将它与不同版本的 XCode 一起使用,鉴于 Bovinedragon 的解释,我可以理解它为什么存在。 【参考方案1】:这是一个编译时检查,因此它将在任何 iOS 版本上创建相同的行为。由于部署目标小于 4.0,因此 if 语句中的代码不会在任何设备上运行。
如果您想要您描述的行为,您需要进行运行时检查。您可以在链接的主题中看到如何执行此操作的示例。
【讨论】:
好吧,这是有道理的。我想知道它如何以其他方式工作。以上是关于何时使用“#if __IPHONE_OS_VERSION_MIN_REQUIRED > x”?的主要内容,如果未能解决你的问题,请参考以下文章
何时使用 GetXXX() 方法以及何时使用 Getter 属性