在构建时ios xcode分配静态常量

时间:2014-01-28 14:28:49

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

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

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

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

所以现在我想自动完成。

我创建了两个目标,如MyAppStage和MyAppProd。我想我应该为此编写一个Run Script来切换这两行#define行。但我不知道怎么写剧本。

还是有更好的方法来处理这种情况吗?

THX,

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

在您的暂存目标中,添加预处理器宏,例如STAGING_BUILD。不要改变生产目标。

现在,在您的代码中:

#ifdef STAGING_BUILD

//for stage
#define SERVICE_URL @"myStageUrl.com"

#else

//for prod
#define SERVICE_URL @"myProdUrl.com"

#endif

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