0

我可以找到很多关于如何只编译/运行代码的示例,然后 iOS 版本是 > 的东西,但是我该如何做呢?我通过在模拟器中运行 iOS 5.0 尝试了以下操作:

#if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_6_0
// Code for iOS < 6.0 here
#endif

但是里面的代码#if - #endif并没有在iOS 5.0的模拟器上运行。我怎样才能做到这一点?

[编辑] 好的,所以我不确定我想要什么,抱歉 :) 问题是我希望 UITableViewDelegate 中的这段代码仅在设备运行 iOS < 6.0 时运行:

-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
}

这是因为如果我运行 iOS < 6,我想做一些样式,但是在 iOS 6 上我可以更容易地做这个样式。但是在这个方法中运行时的版本检查并不是我真正想要的,因为那样就太晚了。


谢谢索伦_

4

2 回答 2

7

之间有区别

  1. 编译时检查您是否针对特定的 SDK 进行编译,并且
  2. 检查您的代码在哪个操作系统上运行

检查 __IPHONE_6_0 宏只会检查您正在为哪个目标编译...这是您想要的吗?如果是这样,您可以使用#ifndef __IPHONE_6_0检查您是否没有为 iOS 6 编译

如果您想知道您的代码在哪个操作系统上运行,您可以查看 MSK 的答案

于 2013-03-21T07:59:46.997 回答
3

这是运行时而非编译时检查。

#define SYSTEM_VERSION_LESS_THAN(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

像使用它一样

if(SYSTEM_VERSION_LESS_THAN(@"6.0")) {

}

于 2013-03-21T07:56:52.457 回答