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 编译器警告

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 通过阅读别人的优秀源码,你会发现别人的开源API设计中,有一些宏你是经常忽略的,或者你不知道的。通过这些宏,...
    gitKong阅读 5,227评论 5 41
  • 1,警告:“xoxoxoxo” is deprecated解决办法:查看xoxoxoxo的这个方法的文档,替换掉这...
    layjoy阅读 4,470评论 0 3
  • 在iOS开发过程中,如果要使用到一些跟特定系统版本特性有关的功能,或者要适配低版本系统的用户,还有一些方法是新版本...
    Cloudox_阅读 4,777评论 0 2
  • iOS宏的经典用法Apple的习惯attribute iOS宏的经典用法1.常量宏、表达式宏 define kTa...
    reallychao阅读 3,934评论 0 0
  • 今夜又是难眠之夜 今夜恰是圆月高照 那份执着又上心头 明月之下用文字诞下美好心情 佳节之时 用真情为明天写下更美好...
    始之居士阅读 314评论 0 6