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. 我为这个宏设计了可变的参量列表,因此你可以添加任意数量的参量而不会有问题。
  • 相关阅读:
    HTTP协议
    从Iterator到async/await
    那些年曾谈起的跨域
    设计模式之观察者模式与发布订阅模式
    移动Web深度剖析
    浅析JavaScript异步
    mySql入门-(二)
    C# WEB项目MVC框架原理及约定
    Dynamics CRM 邮箱设置 “允许使用凭据进行电子邮件处理” 被禁用的解决
    Win10系统恢复IE 11浏览器
  • 原文地址:https://www.cnblogs.com/tinkl/p/3667543.html
Copyright © 2011-2022 走看看