簡體   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