我已经阅读了大约 10 篇文章,但还没有发现我的实现有什么问题。
这个应用程序是用 iOS 6 编写的,但更新到了 iOS7,所以我想提供对 iOS6 和 iOS7 的支持。但如果我在 iOS6 设备上运行仅适用于 iOS7 的方法,它就会崩溃。 所以我想到添加respondsToSelector,以检查它是否有iOS7,但由于某种原因,if总是返回false。
AppDelegate.m:
if ([[UINavigationBar appearance] respondsToSelector:@selector(shadowImage)])
if ([[UINavigationBar appearance] respondsToSelector:@selector(setShadowImage:)])
有人可以告诉我我做错了什么吗?
编辑:我尝试将部署目标设置为 iOS6 和 iOS7,两种情况都返回 false。
Edit2:如果我删除 if 语句并调用该方法,它会按 iOS7 中的预期工作。
最佳答案
无需查询[UINavigationBar外观]
来获取选择器,只需
[UINavigationBar instancesRespondToSelector:@selector(shadowImage)]
另一种解决方案可能是检查 iOS 版本
if ([[[UIDevice currentDevice] systemVersion] compare:@"7.0" options:NSNumericSearch] != NSOrderedAscending)
NSLog(@"iOS >= 7.0");
关于objective-c - respondsToSelector - 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18953705/