Как условно включить код только в том случае, если выше определенной версии iOS?

У меня есть часть кода, которая работает только на iOS 6 или выше.

control.tintColor = [UIColor greenColor];

Есть ли готовая к использованию директива компилятора, например #ifdef iOS6_or_greater?

Ответ 1

Лучше всего, если вы проверяете функциональность, а не версию iOS.

Например, вы можете использовать responsesToSelector, чтобы узнать, поддерживается ли данный метод.

[someObject respondsToSelector:@selector(someMethod)]

В противном случае существует директива препроцессора

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 60000
- (BOOL)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}
#endif

Ответ 2

вы можете пойти для этого...........

float currSysVerFloat = [[[UIDevice currentDevice] systemVersion]floatValue];
if (currSysVerFloat>=6.0) {
    isversion6=TRUE;
    control.tintColor = [UIColor greenColor];
    //This is iOS6 or greater
} else {
    //do nothing
    isversion6 = FALSE;
}

Ответ 3

Я просто даю вам базовый код сравнения версии системы

Введите следующий код в

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

ваш projectName-Prefix.pch, чтобы вы могли получить доступ к нему в любом месте.

И примените его как условие, подобное

if( SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6") )
{

}
else
{

}