RespondsToSelector - не работает
Я прочитал около 10 сообщений, но не нашел, что не так с моей реализацией.
Это приложение было написано для iOS 6, но обновлено до iOS7, поэтому я хочу предложить поддержку как iOS6, так и iOS7. Но если я запускаю метод iOS7-only на устройстве iOS6, он ломается. Поэтому я подумал о добавлении responsedsToSelector, чтобы проверить, что на нем установлена iOS7, но по какой-то причине if всегда возвращает false.
AppDelegate.m:
if ([[UINavigationBar appearance] respondsToSelector:@selector(shadowImage)])
if ([[UINavigationBar appearance] respondsToSelector:@selector(setShadowImage:)])
Может кто-нибудь сказать мне, что я делаю не так?
Изменить: я пытался с целевым значением развертывания, установленным на iOS6 и iOS7, оба случая возвращают false.
Edit2: если я удаляю оператор if и вызываю метод, он работает так, как задумано в iOS7.
1 ответ
Вместо того, чтобы запрашивать [UINavigationBar appearance]
для селектора, просто
[UINavigationBar instancesRespondToSelector:@selector(shadowImage)]
альтернативным решением может быть проверка версии iOS
if ([[[UIDevice currentDevice] systemVersion] compare:@"7.0" options:NSNumericSearch] != NSOrderedAscending)
NSLog(@"iOS >= 7.0");