iPhone - 在本地环境和生产环境设置之间切换

7
我正在开发一款iPhone应用程序,它使用某个服务器来获取数据。在应用程序的源代码中,我硬编码了连接的URL。这很好,但是我并不总是想使用生产服务器进行测试!我不想去操作实时数据,只是为了本地测试而已。因此,我设置了一个本地版本的同样的服务器。但是,为了让iPhone应用程序使用该服务器,必须更改源代码中的硬编码URL。
如果经常在两个服务器之间切换,这有点麻烦。而且,我可能会意外发布仍然使用本地URL的应用程序!
我想也许XCode可以帮助我解决这个问题,因为它具有“Debug”和“Release”配置选项来构建应用程序。那么我的问题是:我能否以某种方式更改Debug配置,使其指向本地服务器URL?也许通过指向包含特定环境URL的属性或plist文件来实现。然后,我可以制作两个版本的此属性文件,并将Debug配置指向其中一个,同时将Release配置指向另一个。
有人知道我该如何做到这一点吗?
3个回答

5

将此代码放在需要根据模式(debug/release)=(development/production)使用配置的位置。

最佳放置位置是在“ProjectName”_Prefix.pch文件中。

#ifndef __OPTIMIZE__ // __OPTIMIZE__ is not enabled, it means that the active config is Debug, so here you have to put your code for development mode

// For example
#define SERVER_URL @"http://my.test.server/something"

#else //__OPTIMIZE__ is defined, so put here your production code

// For example
#define SERVER_URL @"http://my.production.server/something"

#endif // __OPTIMIZE__

祝好!
VFN


2
在您的头文件中(例如预编译头文件)定义带有URL的宏。参考这篇文章并采用类似的方法。
顺便说一下,我在所有我的应用程序中都使用了这篇文章中的记录方法 - 它非常好用,我强烈推荐!

这种方法有点棘手。正如您可以在文章的评论中检查到的那样,一些人遇到了问题。而且,当您可以使用iPhone SDK/GCC已经实现的默认标志/标识符('OPTIMIZE', 'DEBUG'或其他)时,您需要定义编译标志。 - vfn
我已经搞定了 - 但我想可能因为每个项目都必须设置这个,所以长期甚至短期运行都会很麻烦。在我的意见中,这应该在XCode或编译器环境中设置好。 - Jonny

1

您可以通过简单地编辑gcc语言设置在xcode中定义预处理器宏:

转到项目菜单并选择“编辑项目设置”。 转到“构建”选项卡。

转到标记为“GCC 4.0 - 语言”的部分。 有一个名为“Other C Flags”的设置。 在那里添加所有“-Dwhatever”宏。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接