首页 > 移动平台 > 详细

ios 系统参数用法

时间:2014-04-16 12:05:26      阅读:592      评论:0      收藏:0      [点我收藏+]

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

bubuko.com,布布扣
#if __IPHONE_OS_VERSION_MIN_REQUIRED

    #import "xxxxxxxx ios7以下版本"

#else

    #import "xxxxxxxx 比如ios7以上版本"

#endif
bubuko.com,布布扣

 

官网文档介绍:

bubuko.com,布布扣
#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
/...........................
bubuko.com,布布扣

 

bubuko.com,布布扣
#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
bubuko.com,布布扣

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

bubuko.com,布布扣
#define IF_PRE_IOS4(...)     if (kCFCoreFoundationVersionNumber < kCFCoreFoundationVersionNumber_iPhoneOS_4_0)     {         __VA_ARGS__     }
bubuko.com,布布扣

这里有三点需要指出:

  1. 我使用kCFCoreFoundationVersionNumber在runtime时决定iPhone OS的版本。网上也有许多其他的例子比如使用[[UIDevice currentDevice] systemVersion],但是这个方法需要进行字符串的比较而且可能需要处理字符串中的最大和最小数字。相比而言,一个double型的比较更加直接。
  2. 我没有使用惯用的do{x}while(0)结构在这个宏中,因此如果你需要的话你可以添加一个else在该宏的末尾(而且它不需要条件编译)。
  3. 我为这个宏设计了可变的参量列表,因此你可以添加任意数量的参量而不会有问题。

 

ios 系统参数用法,布布扣,bubuko.com

ios 系统参数用法

原文:http://www.cnblogs.com/tinkl/p/3667543.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!