Сегодня мое приложение одобрило, но я добрался, электронные письма от пользователей говорит, что оно отказывает. Я выяснил это
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];
Проблема, поскольку у пользователей есть встроенное микропрограммное обеспечение 3.1.x, этот API не работает и сбой приложения.
Таким образом, я имею, заменяют его
if ([[[UIDevice currentDevice] systemVersion] floatValue]>=3.2)
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];
else
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
Мои вопросы...
То, что я сделал лучшее решение?
Почему XCODE не предупредил меня, что SetStatusBarHidden withAnimation не находится в 3,0, в то время как я установил свое встроенное микропрограммное обеспечение ОС Traget 3.0?
Я должен проверить каждый API, чтобы видеть, работает ли он с моей Целью ОС?
Спасибо
Я бы порекомендовал вам чтобы использовать следующий фрагмент кода вместо проверки версии ОС, лучше проверьте, доступен ли в настоящее время селектор.
if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)])
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
else
[[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
Это, вероятно, лучший вариант, кроме ограничения вашего приложения> = 3.2. в любом случае, ваш xcode должен выдать предупреждение о том, что сообщение SetStatusBarHidden withAnimation не поддерживается («может не отвечать»).
К сожалению, если вы компилируете SDK 4.0 с помощью симулятора, приведенные выше решения выдадут вам предупреждение, которое по умолчанию рассматривается как ошибка:
warning: 'setStatusBarHidden:animated:' is deprecated (declared at /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIApplication.h:267)
Таким образом, вы можете установить Для параметра «Обрабатывать предупреждения как ошибки» установите значение false в настройках сборки, или вы можете использовать макросы для условного включения правильного кода. У меня базовый SDK установлен на Device 4.0, моя целевая ОС - 3.1, и я использую этот макрос:
#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
#if __IPHONE_OS_VERSION_MIN_REQUIRED > 30100
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:YES];
#else
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
#endif
#endif
Обратите внимание, что setStatusBarHidden: withAnimation появился в версии 3.2.