iOS判断系统版本号的方法

很多系统方法都有版本支持的说明,所以对于支持多个系统版本,需要判断系统版本来执行方法。
比如:

+ (NSURLSessionConfiguration *)backgroundSessionConfiguration:(NSString *)identifier NS_DEPRECATED(NSURLSESSION_AVAILABLE, 10_10, 7_0, 8_0, "Please use backgroundSessionConfigurationWithIdentifier: instead");
+ (NSURLSessionConfiguration *)backgroundSessionConfigurationWithIdentifier:(NSString *)identifier NS_AVAILABLE(10_10, 8_0);

第一个方法只支持7-8版本,第二个8版本以后开始起用。

  • 方法1:获取系统版本
    NSString * systemVersion = [UIDevice currentDevice].systemVersion;
    if (systemVersion.doubleValue >= 9.0) {
        //针对 9.0 以上的iOS系统进行处理
    }
    else{
        //针对 9.0 以下的iOS系统进行处理
    }
  • 方法2:通过Foundation框架版本号
    if(NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_9_0) {
        //针对 9.0 以上的iOS系统进行处理
    }
    else{
        //针对 9.0 以下的iOS系统进行处理
    }
  • 方法3:根据特有的类判断
if (NSClassFromString(@"UNNotification")) {
        // 存在这个类 iOS 10.0 以上系统的处理
    } else {
        // iOS 10.0 以下系统的处理
    }
  • 方法4:根据特有的方法进行判断
    if ([UIFont respondsToSelector:@selector(preferredFontForTextStyle:compatibleWithTraitCollection:)]) {
        // 存在这个方法 iOS 10.0 以上系统的处理
    } else {
        // iOS 10.0 以下系统的处理
    }

方法3、4基本上是已经知道了类或者方法的系统支持版本再进行判断了,可用性不是很高。另外,为了防止警告,可能在判断里还需要加一些宏来去掉警告,参考:#pragma GCC diagnostic 编译器警告

你可能感兴趣的:(iOS判断系统版本号的方法)