Obj-C, условно запускать код только при наличии iOS5? - PullRequest
4 голосов
/ 27 марта 2012

Как я могу проверить и условно только скомпилировать / запустить код, если iOS5 доступна?

Ответы [ 2 ]

5 голосов
/ 27 марта 2012

Вы можете проверить systemVersion свойство UIDevice следующим образом:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0f) {
    // Do something
}

Но лично мне не нравится этот метод, так как мне не нравится разбор строки, возвращенной из systemVersion, и сравнение выполняется таким образом.

Лучший способ - проверить, существует ли какой-либо класс / метод, который вы хотите использовать. Например:

Если вы хотите использовать TWRequest из платформы Twitter:

Class twRequestClass = NSClassFromString(@"TWRequest");
if (twRequestClass != nil) {
    // The class exists, so we can use it
} else {
    // The class doesn't exist
}

Или, если вы хотите использовать startMonitoringForRegion: из CLLocationManager, который был введен в iOS 5.0:

CLLocationManager *locationManager = [[CLLocationManager alloc] init];
...
if ([locationManager respondsToSelector:@selector(startMonitoringForRegion:)]) {
    // Yep, it responds
} else {
    // Nope, doesn't respond
}

В общем, лучше делать подобные проверки, чем смотреть на системную версию.

4 голосов
/ 27 марта 2012

Попробуйте этот код:

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0)
{
     //Do stuff for iOS 5.0
}

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...