Как выполнить код только для iOS 5, не ломая приложение - PullRequest
2 голосов
/ 27 октября 2011

Как выполнить код только для iOS 5 с совместимостью с iOS <5?Я написал этот код: </p>

 BOOL isIOS5 = [[[UIDevice currentDevice] systemVersion] floatValue] > 4.3;
 if (isIOS5) {

    [[UINavigationBar appearance]setBackgroundImage:[UIImage imageNamed:@"cabecera.png"] forBarMetrics:UIBarMetricsDefault];
    [[UINavigationBar appearance]setTintColor:[UIColor colorWithRed:80.0f/255.0f green:150.0f/255.0f blue:185.0f/255.0f alpha:1]];

 }

Если я запускаю приложение в iOS 5, оно работает нормально, но если я пытаюсь запустить приложение в эмуляторе iOS <5, оно ломается.Есть ли способ написать приложение, которое имеет код только для iOS5, но игнорирует его, когда iOS <5? </p>

Ответы [ 4 ]

9 голосов
/ 27 октября 2011

В вашем случае вам следует проверить, доступен ли метод в текущей версии iOS:

if([UINavigationBar respondsToSelector:@selector(appearance)]) //iOS >=5.0
{
    [[UINavigationBar appearance]setBackgroundImage:[UIImage imageNamed:@"cabecera.png"] forBarMetrics:UIBarMetricsDefault];
    [[UINavigationBar appearance]setTintColor:[UIColor colorWithRed:80.0f/255.0f green:150.0f/255.0f blue:185.0f/255.0f alpha:1]];
}

Пожалуйста, смотрите также этот вопрос / ответ .

6 голосов
/ 27 октября 2011

Вы не должны проверять версию ОС.

Вместо этого вы должны проверить, доступна ли эта функция или нет.

Особенно проверить, реагирует ли UINavigationBar на селектор @selector(appearance).

Вы должны прочитать эту документацию Apple , которая объясняет все это (особенно эта страница )

1 голос
/ 20 февраля 2012

Ответы здесь не совсем правильные.Если бы мы говорили о обратно совместимом API, то они были бы правильными, вам не нужно проверять номер версии во время выполнения.Но в случае с iOS реальность такова, что существуют ситуации, когда вам нужно, потому что Apple не просто добавила функциональность, как вы могли ожидать, но иногда изменяет существующую функциональность несовместимыми способами, когда выпускается новая версия.

Основным примером является UIViewController parentViewController :

До iOS 5.0, если представление не имело родительского контроллера представления и было представлено, контроллер представления представления был бывернулся.На iOS 5 такое поведение больше не происходит.

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

0 голосов
/ 27 октября 2011

Я не очень уверен в этом, но вы можете это тоже ..

Click on your **project**->go to **info**-> go to **build** section-> in that go to **Deployment** section->then **IOS deployment** section choose the **deployment target** you want and save and run...

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

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