如何检查某个功能在特定 iOS 版本上是不是可用?
Posted
技术标签:
【中文标题】如何检查某个功能在特定 iOS 版本上是不是可用?【英文标题】:How can I check if a feature is available on a specific iOS version?如何检查某个功能在特定 iOS 版本上是否可用? 【发布时间】:2011-12-22 08:18:07 【问题描述】:在我的 AppDelegate 中,我使用外观代理来制作自定义 UI:
//Setup custom appearances
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"header"] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setTintColor:[UIColor blackColor]];
[[UIToolbar appearance] setBackgroundImage:[UIImage imageNamed:@"header"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
这将在 ios4 中崩溃。如何检查该功能在他们运行的 iOS 版本上是否可用,从而避免崩溃?
【问题讨论】:
Check iPhone iOS Version 的可能重复项 【参考方案1】:不检查操作系统,检查能力是否存在。
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)])
【讨论】:
令人震惊。我认为检查操作系统版本没有任何害处。仅仅存在一个符号并不能使其底层实现在操作系统版本之间相等。 Apple 不建议检查版本。正如@joshua 所说,您应该寻找您感兴趣的功能。 虽然我基本同意(极少数情况除外),但我认为推荐不同的方法并不是一个完整的答案。对我来说,一个例外情况是针对 iOS 4 中的一个框架错误的解决方法,该错误导致 iOS 5 中的 API 未更改。一个完整的答案回答了问题,然后推荐了更好的方法。 解决操作系统错误是一个完全不同的问题。 类是对象,像我一样在类上调用实例方法是完全有效的,并且会得到预期的结果。【参考方案2】:试试这个:
[UIDevice currentDevice].systemVersion
【讨论】:
感谢您的反对。以前的问题是“如何检查用户使用的是 iOS4 还是 iOS5?”顺便说一句。 人们应该在投票前验证事实。以上是关于如何检查某个功能在特定 iOS 版本上是不是可用?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查某些 Mercurial 遥控器上是不是存在特定版本?
如何在 iOS 上检查用户设备上是不是安装了特定应用程序? [复制]