如何在特定的应用程序中重新定义框架常量?

时间:2015-04-21 20:35:27

标签: ios objective-c constants

我正在开发一个Objective-C SDK,它分为两部分,一个包含视图的包和一个静态编译的库。此SDK与REST API进行通信,该API具有两个部署,即开发和生产。

注意:当我说"指向开发"我的意思是SDK正在与开发REST API进行通信,当我说"指向prod"我的意思是SDK正在与生产REST API进行通信。

我目前有一个名为NetworkConstants.h的常量文件,其中包含:


#ifdef DEBUG
// development REST API
#define API_BASE_URL @"http://xxx.xxx.xxx.xxx:port"
#else
// production REST API
#define API_BASE_URL @"http://api.company.com"
#endif

#define ROUTE_A API_BASE_URL @"/route_a"
#define ROUTE_B API_BASE_URL @"/route_b"
...

然后我根据需要使用ROUTE_...

此SDK目前位于包含SDK项目的工作区,一个非常简单的测试应用程序,以及一家同意测试我们产品的公司开发的演示应用程序(我说是演示应用程序,因为我们用它来演示产品。)

目标

我希望能够将应用程序推送到团队成员(通过iTune Connect)并让测试应用程序始终指向开发和演示应用程序指向prod(虽然指向我开发时开发)。

问题

当我将项目存档并提交给iTune Connect时,项目将在Release中编译,因此DEBUG未设置,SDK指向prod。我创建了一个自定义构建目标和构建脚本,用于在Debug中编译SDK(因此应设置DEBUG)。然后,我在测试应用的Target Dependancy中将此构建目标添加为Build Phases,并将构建目标生成的框架添加到测试应用Linked Frameworks and Libraries

这^不起作用。即使我引用自定义构建脚本生成的框架并且此脚本使用DEBUG构建,但似乎SDK项目正在编译时未设置-configuration Debug :(

任何和所有帮助都表示赞赏,并提前感谢。

1 个答案:

答案 0 :(得分:0)

解决方案是进入测试应用的Edit Scheme菜单,并将项目设置为Debug而不是Release