繁体   English   中英

仅当iOS <6.0进行预处理时才运行代码?

[英]Only run code if iOS < 6.0 with preprocessing?

我可以找到许多示例,这些示例仅介绍如何编译/运行代码,然后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 <6.0时才运行UITableViewDelegate中的以下代码:

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

这是因为如果我运行的iOS <6,我想进行一些样式设置,但是在iOS 6上,我可以更轻松地进行样式设置。 但是,在此方法中运行时进行版本检查并不是我真正想要的,因为这很晚。

谢谢
索伦

两者之间有区别

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

检查__IPHONE_6_0宏只会检查您要编译的目标...这就是您想要的吗? 如果是这样,您可以使用#ifndef __IPHONE_6_0来检查您是否针对iOS 6进行编译

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

这是运行时未编译时检查。

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

用起来像

if(SYSTEM_VERSION_LESS_THAN(@“ 6.0”)){

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM