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. 我为这个宏设计了可变的参量列表,因此你可以添加任意数量的参量而不会有问题。
  • 相关阅读:
    Python自动化开发-基础语法
    Python自动化开发-简介
    Hello World!
    Mongo导出数据文件导致错误 Got signal: 6 (Aborted)解决方法
    PHP快速排序及其时间复杂度
    PHP读某一个目录下所有文件和文件夹
    PHP获得两个绝对路径的相对路径
    awk神器
    PHP使用Mysql事务
    PHP使用session_set_save_handler陷阱
  • 原文地址:https://www.cnblogs.com/tinkl/p/3667543.html
Copyright © 2011-2022 走看看