美文网首页ios基础
Xcode user_defined, preprocessor

Xcode user_defined, preprocessor

作者: 陨落心 | 来源:发表于2020-09-26 17:03 被阅读0次

    user_defined

    给用户定义东西用的,具体不明


    user_defined

    preprocesor macro

    预处理宏, oc用的


    preprocesor macro

    swift compilation conditions

    算是Swift宏


    swift compilation conditions

    Objective-C

    OC中一般会在preprocesor macro中定义DEBUG宏,大家最经常用的,这里定义后,代码中就可以用

    #ifdef DEBUG
    // 你的代码
    endif
    

    或者

    #if DEBUG
    // 你的代码
    endif
    

    假设我们想要为app的不同环境(这里假设就正式和测试),用不同的参数, 你可能会在代码中写

    #if DEBUG
    #define MaxUploadImageCount 100
    #else
    #define MaxUploadImageCount 9
    #endif
    

    但是如果我不想直接在代码中写这个呢? 那么可以在user_defined中,添加(上面有个+号)

    添加MaxUploadImageCount
    然后在preprocessor macro中添加一条, MaxUploadImageCount=${MaxUploadImageCount}, preprocessor macro中添加一条
    在代码用打印MaxUploadImageCount,就会在不同环境中变成不同值,当然实际情景中,这种小参数不会这么干,太大材小用了,仅作演示

    在过程中尝试过,在user_defined定义value为字符串的,预定义宏可以读取,但是代码中一旦使用,编译不通过。

    Swift

    Swift中已经不能在代码中直接定义宏了,想要条件编译,只能提前在active compilation conditions 增加宏,唉!
    注意:和oc不一样的是, swift中不是真正的宏, 所以你在active compilation conditions添加时候,不能写DEBUG=1, 你只能写DEBUG。且代码中都是用
    #if而没有#ifdef, 但是作用和oc的#ifdef类似啦,只有 有和没有 两个状态。
    今天突发奇想,不知道swift中能不能读取到user_defined值? 以及能不能达到另类的预定义宏?

    user_defined加入一个字符串的

    注意: 不能使用"-"号等无法在变量中使用的符号,会出错!

    然后在active compilation conditions加入一条${TEST_DEFINED}, 保存,发现似乎在不同配置下生成不一样的宏,真的可以嘛?试试!

    active compilation conditions增加这个

    Swift编译参数中成功读取到:


    成功读取user_defined中定义的

    在代码中使用呢?

    在各自配置下,代码提示会出来对应的
    在Debug下,代码提示Xiaodong, 在Release下, 会提示Xiaodong_Release 成功使用

    用处呢?

    假设我们配置Swift编译参数中为isAppstore=${appstore}, 在自动化打包时候,如果这次打包的是appstore包,我想要把这个信息告诉app,可自动增加user_defined里appstore的release配置下值为"isAppstore", 然后代码中的isAppstore就生效了!
    添加user_defined值,实现动态swift宏效果, 更多用处等待你来挖掘。仅提供思路。

    相关文章

      网友评论

        本文标题:Xcode user_defined, preprocessor

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