如何检查IOS版本?

如何检查IOS版本?

我想检查一下iOS设备的版本大于3.1.3我试过这样的方法:

[[UIDevice currentDevice].systemVersion floatValue]

但这不管用,我只想:

if (version > 3.1.3) { }

我怎样才能做到这一点?



慕容森
浏览 743回答 4
4回答

弑天下

快速回答…在SWIFT2.0中,您可以使用#available在if或guard以保护只应在特定系统上运行的代码。if #available(iOS 9, *) {} 在Object-C中,您需要检查系统版本并执行比较。[[NSProcessInfo processInfo] operatingSystemVersion]在IOS 8及以上版本。截至Xcode 9:if (@available(iOS 9, *)) {}完整答案…在Object-C和SWIFT很少的情况下,最好避免依赖操作系统版本作为设备或操作系统功能的指示。通常有一种更可靠的方法来检查某个特定的特性或类是否可用。检查是否存在API:例如,您可以检查UIPopoverController在当前设备上使用NSClassFromString:if (NSClassFromString(@"UIPopoverController")) {     // Do something }对于弱链接类,直接给类消息是安全的。值得注意的是,这适用于没有显式链接为“Required”的框架。对于缺少的类,表达式的计算结果为零,但条件失败:if ([LAContext class]) {     // Do something }有些课程,比如CLLocationManager和UIDevice,提供检查设备功能的方法:if ([CLLocationManager headingAvailable]) {     // Do something }检查符号的存在:有时,您必须检查是否存在常量。这是在iOS 8中出现的,同时引入了UIApplicationOpenSettingsURLString,用于通过-openURL:..该值在IOS 8之前不存在。将零传递到此API将崩溃,因此您必须首先注意验证常量的存在:if (&UIApplicationOpenSettingsURLString != NULL) {     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; }与操作系统版本相比:让我们假设您所面临的检查操作系统版本的相对较少的需求。针对iOS 8及以上的项目,NSProcessInfo包括用于执行版本比较而错误概率较小的方法:- (BOOL)isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion)version针对旧系统的项目可以使用systemVersion在……上面UIDevice..苹果在他们的GLSprite样本代码。// A system version of 3.1 or greater is required to use CADisplayLink. The NSTimer // class is used as fallback when it isn't available. NSString *reqSysVer = @"3.1"; NSString *currSysVer = [[UIDevice currentDevice] systemVersion]; if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending) {     displayLinkSupported = TRUE; }如果你出于任何原因决定systemVersion是您想要的,请确保将其视为字符串,否则您将面临截断修补程序修订号的风险(例如。3.1.2->3.1)。

慕雪6442864

/*  *  System Versioning Preprocessor Macros  */  #define SYSTEM_VERSION_EQUAL_TO(v)                   ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) #define SYSTEM_VERSION_GREATER_THAN(v)               ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) #define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)   ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) #define SYSTEM_VERSION_LESS_THAN(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) #define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)      ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) /*  *  Usage  */  if (SYSTEM_VERSION_LESS_THAN(@"4.0")) {     ... } if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"3.1.1")) {     ... }

qq_笑_17

您可以使用NSFoundationVersionNumber,从NSObjCRuntime.h头文件。if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {     // here you go with iOS 7 }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS