如何检查iOS版本是否为iOS 6?

26

可能重复问题:
检查iPhone iOS版本

我想在iOS中检查版本号。

因为我有一些代码只适用于iOS 6。

那么我该怎么做呢?

3个回答

49

请查看这个GitHub Gist:https://gist.github.com/998472

你可以将该代码添加或包含在...-Prefix.pch文件中,以便在需要时随处使用。


编辑:

我留下了一个示例,展示如何使用Gist中的代码,这样人们就可以检查它是否对他们有用。 这也可以在Gist上找到。

/*
 *  Usage
 */ 

if (SYSTEM_VERSION_LESS_THAN(@"4.0")) {
    ...
}

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"3.1.1")) {
    ...
}

虽然我很喜欢你在Gist上的代码(如我在那里评论的),但如果你能在这个答案中包含一个示例,那将更好。 - Will Moore
这不是我的要点,我不会在这里包含代码,因为要点是为了随着时间的推移而改进的,而这个答案已经过时了。但是,我将留下一个如何使用它的示例,以便人们可以看到它是否对他们有用。谢谢关心 :) - Fábio Oliveira

40

试试这个:

更新:

NSArray *vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];

if ([[vComp objectAtIndex:0] intValue] >= 7) {
    // iOS-7 code[current] or greater
} else if ([[vComp objectAtIndex:0] intValue] == 6) {
    // iOS-6 code
} else if ([[vComp objectAtIndex:0] intValue] > 2) {
    // iOS-3,4,5 code
} else {
    // iOS-1,2... code: incompatibility warnings, legacy-handlers, etc..  
}

之前的代码:

NSArray *vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];

if ([[vComp objectAtIndex:0] intValue] == 6) {
    // iOS-6 code
} else {
    // iOS-5, iOS-4... code     
}

要特别检查 IOS 的子版本,请使用

float sysVer = [[[UIDevice currentDevice] systemVersion] floatValue];

if (sysVer > 6.01) {
    // iOS-6.01+ code
} else {
    // prior iOS versions
}

如果iOS版本是6.0.1及以上6,你的代码还可以正常工作吗? - Fire Fist
1
是的,只检查第一个索引。 - Lorenz Lo Sauer
这种写法无法对抗 iOS 7 及以上版本的更新。应该改为 if ([[vComp objectAtIndex:0] intValue] >= 6) - colincameron
@c.cam108,已经注意到您的评论并更新了代码。 - Lorenz Lo Sauer
@LoSauer 谢谢 - 我已经撤销了我的负评。感谢你回来更新这个! - colincameron
1
顺便提一下,[[UIDevice currentDevice] systemVersion]非常慢,所以如果您需要在循环或许多地方切换代码,则最好缓存结果。 - Nick Hingston

12

您可以使用以下代码获取 iOS 版本号:

[[UIDevice currentDevice] systemVersion]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接