zoukankan      html  css  js  c++  java
  • ios 系统参数用法

    qi前言:写一个宏来选择性地编译与运行为不同iOS所写的代码来支持多个版本的ios工程

    #if __IPHONE_OS_VERSION_MIN_REQUIRED
    
        #import "xxxxxxxx ios7以下版本"
    
    #else
    
        #import "xxxxxxxx 比如ios7以上版本"
    
    #endif

    官网文档介绍:

    #ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
        /* make sure a default max version is set */
        #ifndef __IPHONE_OS_VERSION_MAX_ALLOWED
            #define __IPHONE_OS_VERSION_MAX_ALLOWED     __IPHONE_7_0
        #endif
    /...........................
    #if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090)
    
    #具体内容
    
    
    #endif

    如果我们打算加入一些高于某个特定版本的OS版本上的东西,我们不需要前面提到的条件编译(因为在后面版本的编译时我们需要这些代码)。在这个情况下,只有runtime检查是需要的。你既可以直接做该检查,也可以与其他宏保持整齐如下所示:

    #define IF_PRE_IOS4(...) 
        if (kCFCoreFoundationVersionNumber < kCFCoreFoundationVersionNumber_iPhoneOS_4_0) 
        { 
            __VA_ARGS__ 
        }

    这里有三点需要指出:

    1. 我使用kCFCoreFoundationVersionNumber在runtime时决定iPhone OS的版本。网上也有许多其他的例子比如使用[[UIDevice currentDevice] systemVersion],但是这个方法需要进行字符串的比较而且可能需要处理字符串中的最大和最小数字。相比而言,一个double型的比较更加直接。
    2. 我没有使用惯用的do{x}while(0)结构在这个宏中,因此如果你需要的话你可以添加一个else在该宏的末尾(而且它不需要条件编译)。
    3. 我为这个宏设计了可变的参量列表,因此你可以添加任意数量的参量而不会有问题。
  • 相关阅读:
    Android-MediaProvider数据库模式
    java String.getBytes()编码问题——String.getBytes(charset)
    设置Eclipse中的tab键为4个空格的完整方法
    linux下的zip命令
    关于facebook infer 静态代码审查工具
    关于软件测试人员能力模型的建立(from知乎)
    [ 转] 漫谈iOS Crash收集框架
    iOS开发如何提高(from 唐巧的博客)
    c++ web服务器
    小米开源监控系统的说明文档
  • 原文地址:https://www.cnblogs.com/tinkl/p/3667543.html
Copyright © 2011-2022 走看看