Предупреждение XCode при использовании устаревшего метода setStatusBarHidden - PullRequest
3 голосов
/ 10 июля 2010

Я нашел это в StackOverflow относительно проблемы, но не смог решить мою проблему.

Вызов соответствующего setStatusBarHidden для версии iOS

if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)])
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
else 
    [[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];

Я установил цель развертывания ОС на 3.0, но все еще получаю предупреждение 'setStatusBarHidden: animated: is устаревшее'

Я бы хотел, чтобы в проекте не было предупреждений, если это возможно, и не хак, который его удаляет. Есть ли способ, которым я должен настроить проект, чтобы удалить это предупреждение?

Я установил базовый SDK проекта на 4.0. И целевой Base SDK до 4.0, целевой SDK до 3.0.

Я сделал эти настройки для «Все конфигурации»

Обновление: по-видимому, предупреждение появляется только в симуляторе, а не при установке для устройства.

Ответы [ 3 ]

4 голосов
/ 10 июля 2010

Предупреждение об устаревании означает, что вы используете то, что не будет поддерживаться в будущем. Этот конкретный синтаксис указан как устаревший здесь . Вы избавляетесь от предупреждения, не используя устаревший метод. Вы должны использовать setStatusBarHidden: withAnimation : вместо

Если вы хотите поддерживать эту функцию в версиях 3.0 и 3.2+, вам придется написать условный код, основанный на целевой версии. Вот некоторая полезная информация о макросах и функциях препроцессора, чтобы помочь вам здесь .

3 голосов
/ 13 октября 2011

Это может помочь, если вы разрабатываете для старых устройств, не уверены в последнем, но это выглядит хорошо:

if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)])
{
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}
else if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: animated:)])
{
    [[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];
}
else if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden:)])
{
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}

Однако проблема возникла после того, как я переключил устройства с iPhone на Universal и вернулся кiPhone.Мне потребовалось некоторое время, чтобы понять, что цель развертывания была изменена на 4.3, поэтому, вернув ее обратно на 3.0, предупреждение исчезло.

1 голос
/ 14 марта 2012

вы можете выполнить это так, чтобы сразу преодолеть предупреждения

#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
(void) methodUsingDeprecatedStuff { //use deprecated stuff }

или

Просто вставьте эту строку перед использованием устаревших материалов каждый раз, чтобы избежать предупреждений

# pragma GCC диагностическое предупреждение "-Wdeprecated-декларации"

это удалит предупреждения.

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

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