ios – Xcode Objective C宏和构建设置,切换开发和分段和生产 – 一个完整的例子?

我有一个生成RESTful请求的ios应用程序.我想根据我是否发送Web服务RESTful请求自动更改我的服务调用端点
一个.开发服务器
湾登台服务器
C.生产服务器

例如,

a. dev url: http://www.dev.camerakingphotos/getAllPhotos
b. test url: http://www.test.camerakingphotos/getAllPhotos
c. production url: http://www.camerkingphotos/getAllPhotos

>我如何告诉XCode毫不费力地将URL切换到我的生产服务器与开发服务器?它是构建设置,预处理器宏,方案还是新目标(我认为新目标不是我想要的).理想情况下,XCode现在知道我正在测试我的应用程序的开发版本,所以我希望所有的URL都指向开发服务器.我想告诉XCode,我现在已经准备好测试我的应用程序以指向生产,因此请使用与生产服务器对应的URL.
>如果我定义预处理器宏,我会在哪里这样做?我有一个APP_CONSTANTS.h文件,它是存储所有服务URL的单一位置.我在APP_CONSTANTS.h文件或Prefix.pch文件中定义预处理器宏吗?
>有人愿意为我拼出一个详细的例子吗?

我查看了stackoverflow,但我很感激有人把所有的部分放在一起,明确地为我,不假设太多的先验知识.我仔细阅读了XCode构建指南(大部分内容),但我只看到了树木而不是森林.

谢谢!

最佳答案
Xcode(几乎)与此无关,如果你想让编译器知道你需要告诉它.编译器只知道你告诉它的内容.我也有这个设置.我使用预处理器宏在它们之间切换.默认情况下,Xcode定义了一个DEBUG预处理程序标志,该标志是在进行应用程序的开发构建时设置的.它没有在Release方案中定义.这是在两台服务器之间切换的最简单方法:

.h文件

extern NSString *const MYServerURL;

.m文件

#ifdef DEBUG
NSString *const MYServerURL = @"http://www.dev.camerakingphotos/getAllPhotos";
#else
NSString *const MYServerURL = @"http://www.camerakingphotos/getAllPhotos";
#endif

请注意,我没有#define这些.这有一个好处,当您更改.m文件时,只需要重新编译它(与前者相反,前者需要重新编译包含头的每个文件).这些变量将全局可用于包含定义变量的标头的任何文件.如果您需要更精细的控制,可以在.pch文件中定义自己的预处理器项,并根据需要打开和关闭它们(通过注释).然后只使用上面的模式而不是DEBUG使用你的项目(但是,不要忘记在发布之前将它们切换到适当的值).

转载注明原文:ios – Xcode Objective C宏和构建设置,切换开发和分段和生产 – 一个完整的例子? - 代码日志