【问题标题】:Assign a static constant at build time ios xcode在构建时分配一个静态常量 ios xcode
【发布时间】:2014-02-19 21:53:14
【问题描述】:

我应该使用 Prod_URL 和 Stage_URL 为我们的测试团队构建和归档我的应用程序。 现在我正在使用Constant.h 文件,并且有类似的代码;

//for stage
#define SERVICE_URL @"myStageUrl.com"
/*
//for prod
#define SERVICE_URL @"myProdUrl.com"
*/

而且我总是更改注释行以便能够构建我的应用的两个不同版本。

所以现在我想自动完成。

我创建了两个目标,例如 MyAppStage 和 MyAppProd。而且我认为我应该为此编写一个运行脚本以在这两条#define 行之间切换。但是我不知道怎么写脚本。

或者对于这种情况有什么更好的方法吗?

谢谢,

【问题讨论】:

    标签: ios iphone objective-c objective-c-runtime run-script


    【解决方案1】:

    如果您有两个单独的目标,您可以将这些定义放在其自身的项目属性中。为此,您需要转到您的项目属性。单击要编辑的目标,单击“构建设置”选项卡并搜索预处理器宏。在那里定义你想要的任何东西,它将对该目标中的每个类都可见。

    另一个选项是使用相同的预处理器宏构建设置并为STAGE 设置一个宏。然后在你的 Constant.h 中你可以有类似的东西:

    //for stage
    #ifdef STAGE
    #define SERVICE_URL @"myStageUrl.com"
    #else
    //for prod
    #define SERVICE_URL @"myProdUrl.com"
    #endif
    

    【讨论】:

      【解决方案2】:

      在您的暂存目标中,添加一个预处理器宏,类似STAGING_BUILD 就可以了。不要更改生产目标。

      现在,在您的代码中:

      #ifdef STAGING_BUILD
      
      //for stage
      #define SERVICE_URL @"myStageUrl.com"
      
      #else
      
      //for prod
      #define SERVICE_URL @"myProdUrl.com"
      
      #endif
      

      然后根据选择要构建的目标只编译所需的行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多