objective-c – respondToSelector出现代理失败

objective-c – respondToSelector出现代理失败,第1张

概述我试图通过在[UIBarButtonItem外观]上运行respondToSelector来检测iOS 6特定的外观方法。但是,无论我指定的选择器,它总是为我返回NO: // Should show NOPE in iOS 5, YEP in iOS 6. Shows NOPE alwaysNSLog(@"%@", [[UIBarButtonItem appearance] respondsTo 我试图通过在[UIbarbuttonItem外观]上运行respondToSelector来检测iOS 6特定的外观方法。但是,无论我指定的选择器,它总是为我返回NO:

// Should show nopE in iOS 5,YEP in iOS 6. Shows nopE alwaysNSLog(@"%@",[[UIbarbuttonItem appearance] respondsToSelector:@selector(setBackgroundImage:forState:style:barMetrics:)] ? @"YEP" : @"nopE"); // Should show YEP in both iOS 5 and iOS 6. Shows nopE alwaysNSLog(@"%@",[[UIbarbuttonItem appearance] respondsToSelector:@selector(setBackgroundImage:forState:barMetrics:)] ? @"YEP" : @"nopE");

实际上使用这些方法在各自的iOS版本上都可以正常工作,但我似乎无法检测到哪个版本可用。那么我该怎么做呢?

解决方法 不要检查外观代理。你永远不会依赖这个,因为它是一个代理。相反,直接检查具有新方法的项目,在本例中为UIbarbuttonItem:

BOol hasNewMethod = [UIbarbuttonItem instancesRespondToSelector:@selector(setBackgroundImage:forState:style:barMetrics:)];if( hasNewMethod )  NSLog(@"Running iOS 6 with new method");else  NSLog(@"Current OS doesn't support method...");
总结

以上是内存溢出为你收集整理的objective-c – respondToSelector出现代理失败全部内容,希望文章能够帮你解决objective-c – respondToSelector出现代理失败所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1073686.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存