我可以找到很多关于如何编译/运行代码的例子,然后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上运行。我怎么能这样做?
[编辑] 好的,所以我不确定我想要的是什么,对不起:)问题是我希望只有当设备运行iOS&lt;时才能运行我的UITableViewDelegate中的代码。 6.0:
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
}
这是因为我想在运行iOS&lt; 6,但在iOS 6上我可以更容易地做这个样式。但是在这个方法中运行时的版本检查实际上并不是我想要的,因为它已经很晚了。
谢谢你 索伦
答案 0 :(得分:7)
之间存在差异
检查__IPHONE_6_0宏只会检查您正在编译的目标...是您想要的?如果是这样,您可以使用#ifndef __IPHONE_6_0
来检查您是否未针对iOS 6进行编译。
如果您想知道运行代码的操作系统,可以查看MSK的answer。
答案 1 :(得分:3)
这是运行时不编译时检查。
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
像
一样使用它如果(SYSTEM_VERSION_LESS_THAN(@ “6.0”)) {
}