如何检查某个功能在特定 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 版本中可用?

如何在 iOS 上检查用户设备上是不是安装了特定应用程序? [复制]

如何在运行应用程序的系统上检查所需的 Windows API 功能是不是可用?

如何检查 iOS 是不是有可用更新?

检查是不是在 iOS 9 上安装或启动了特定应用程序