【问题标题】:NSFoundationVersionNumber and iOS VersionsNSFoundationVersionNumber 和 iOS 版本
【发布时间】:2013-11-28 05:53:18
【问题描述】:

嗯,我想我的问题很简单。

我使用 NSFoundationVersionNumber 来检查我的应用程序的版本,并使其与 iOS6 和 iOS7 兼容。

if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1 ){
//Here goes the code for iOS 7 
}

else if (NSFoundationVersionNumber == NSFoundationVersionNumber_iOS_6_1){
//Here goes the code for iOS 6.1
}

嗯,据我所知,Apple 已经发布了 6.1.X 版本。所以,使用第二个“else-if”语句,我制作的兼容版本列表中排除了 6.1.X 版本?如果是回答,那我怎么判断设备是否运行在 6.1.X 版本上?

非常感谢:)

【问题讨论】:

    标签: ios version


    【解决方案1】:

    NSFoundationVersionNumber == NSFoundationVersionNumber_iOS_6_1 为真时,则设备具有 6.1.X。

    NSFoundationVersionNumber == NSFoundationVersionNumber_iOS_6_0为真时,设备有6.0.X。

    NSFoundationVersionNumber < NSFoundationVersionNumber_iOS_6_0为真时,设备为5.1.X及以下。

    NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1为真时,设备为7.0及以上。

    【讨论】:

    • 所以你告诉我 NSFoundationVersionNumber_iOS_6_1 ,包括 iOS 6.1.X 版本?我说的对吗?
    • 是的,所有版本都包括在内。如果您想准确了解哪个,则必须深入了解[UIDevice currentDevice].systemVersion
    • 这不是 100% 正确的。 6_0 和 6_1 具有相同的基础编号(在 NSObjCRuntime.h 中找到 993.00)。所以对于
    • 这个答案不再准确,6_0 和 6_1 的基础版本现在不同(分别为 992 和 993)。
    • @Julian 不过,如果 Apple 更改了基础版本,他们应该为每个版本都有一个宏。仍然值得报告错误。
    【解决方案2】:

    Apple 忘记为 iOS 7、10.8 和 10.9 提供 NSFoundationVersionNumber 常量,但您可以通过 NSLogging 退出您的 NSFoundationVersionNumer(它为您提供当前操作系统的 NSFoundationVersionNumber)来获取这些数字

    【讨论】:

    • NSLog("%.4f", NSFoundationVersionNumber) 确实是一个很好的答案。谢谢。
    【解决方案3】:

    在 iOS 8 中,Apple 现在在 NSProcessInfo 中提供了 NSOperatingSystemVersion 结构

    您可以将其与 isOperatingSystemAtLeastVersion: 一起使用,或者只需检查 3 个字段即可准确了解运行您的应用的系统版本。

    【讨论】:

    • 这绝对有帮助。但是,如果您支持 iOS7 和 8,则需要对 isOperatingSystemAtLeastVersion 使用 NSFoundationVersionNumber 和 respondsToSelector 的组合,因为该方法“在 iOS 8.0 及更高版本中可用”。
    猜你喜欢
    • 2013-10-19
    • 2016-02-03
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2012-10-16
    相关资源
    最近更新 更多