2013-03-21 2 views
0

Я могу найти много примеров того, как только компилировать/запускать код, а затем версия iOS - это что-то, но как мне это сделать наоборот? Я попытался следующий, запустив IOS 5.0 в тренажере:Выполнять только код, если iOS <6.0 с предварительной обработкой?

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

Но код внутри #if - #endif не запускается на прошивке 5.0 в тренажере. Как я могу это сделать?

[EDIT] Ok, так что я не был уверен, что я хотел, кажется, извините :) Дело в том, что я хочу этот код в моем UITableViewDelegate будет работать только если устройство работает под управлением IOS 6.0 <:

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

Это потому, что я хочу сделать несколько стилей, если я запускаю iOS < 6, но на iOS 6 я могу сделать этот стиль намного проще. Но проверка версии во время выполнения внутри этого метода не совсем то, что я хочу, потому что тогда поздно.

Спасибо
Сорен

+0

Почему, по вашему мнению, проверка во время выполнения слишком поздняя? –

ответ

7

Там разница между

  1. чек во время компиляции если вы компилируете данные по конкретному SDK и
  2. проверки, которая ОС код работает на

Проверки на _ _ IPHONE_6_0 макроса будет просто проверить, какие целевые вы собираете для ... это то, что вы хотите? Если да, то вы могли бы использовать #ifndef __IPHONE_6_0, чтобы проверить, если вы не компиляции для прошивки 6.

Если вы хотите узнать, какую ОС код работает, вы можете проверить ММС-х answer.

3

Вот время работы не компилировать проверку времени.

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

использовать его как

если (SYSTEM_VERSION_LESS_THAN (@ "6,0")) {

}

Смежные вопросы