美文网首页工作生活
Swift中的条件编译

Swift中的条件编译

作者: 盖小聂 | 来源:发表于2019-06-30 17:29 被阅读0次

    1、条件编译
    2、宏定义define

    1、条件编译
    • Swift中没有宏定义的概念,因此我们不能使用#ifdef的方法来检查某个符号是否经过宏定义。但是为了控制编译流程和内容,Swift还是为我们提供了几种简单的机制来根据需求定制编译内容的。
      首先是#if这套编译标记还是存在的,使用的语法也和原来没有区别
    #if <condition>
    
    #elseif <condition>
    
    #else
    
    #endif
    

    但是这几个表达式里的condition并不是任意的。Swift内建了几种平台和架构的组合,来帮助我们为不同的平台编译不同的代码。
    方法os(),可选参数OSX,iOS
    方法arch(), 可选参数x86_64, arm, arm64, i386

    • 对自定义的符号进行条件编译。为了使自定义的编译符号FREE_VERSION有效,我们需要在项目的编译选项中进行设置,在项目的Build Settings中,找到Swift Compiler-Custom Flags,并在其中的Other Swift Flags加上 -D FREE_VERSION就可以了。
    2、宏定义define
    • Swift中没有宏定义。
    • Swift中将宏定义彻底从语言中拿掉了,并且Apple给了我们一些替代的建议:
      I、使用合适作用范围的let或者get属性来替代原来的宏定义值,例如很多Darwin中的C的define值就是这么做的:var M_PI: Double { get }
      II、对于宏定义的方法,类似的在同样作用域写成Swift方法。
      III、随着#define的消失,像#ifdef这样通过宏定义是否存在来进行条件判断并决定某些代码是否参与编译的方式也消失了。但是我们仍然可以使用#if并配合编译的配置来完成条件编译。

    相关文章

      网友评论

        本文标题:Swift中的条件编译

        本文链接:https://www.haomeiwen.com/subject/gxmbcctx.html