Подобный вопросу Ben Gottlieb, у меня есть горстка вызовов устаревших, которые прослушивают меня. Существует ли способ отключить предупреждения с методической точностью? Например:
if([[UIApplication sharedApplication]
respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) {
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
} else {
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; //causes deprecation warning
}
Все, о чем я забочусь, является той строкой. Я не хочу выключать все предупреждения депрекации. Я также не сделал бы чего-то, любят, подавляют определенные предупреждения файлом.
Было несколько других обстоятельств, где я хотел отметить определенную строку как хорошо даже при том, что компилятор генерирует предупреждение. Я по существу хочу позволить своей команде знать, что проблема была решена и прекращает прослушиваться о той же строке много раз.
Винсент Гейбл опубликовал интересное решение. Вкратце:
@protocol UIApplicationDeprecatedMethods
- (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated;
@end
if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) {
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
} else {
id<UIApplicationDeprecatedMethods> app = [UIApplication sharedApplication];
[app setStatusBarHidden:YES animated:NO];
}