IOS #ifdef 的那些事儿
格式有点乱,整了几次都整不过来,大家将就一下吧。
这篇文章是本人(本人是菜鸟)在第一次接触上线项目时遇到的一个让我记忆深刻的问题。
如果你是大神,那么请绕过,这只是很肤浅的知识点,写给自己也分享给大家。
相信大家对于下面的语句一定不陌生。
#ifdef (1)
(2)
#else
(3)
#endif
但是我在这里还是稍微解释一下吧(显得专业),如果在这个式子之前有#define(1)的话执行(2)否则执行(3)
如果只是这一点的话那么就对不起各位观众了。下面就要说我遇到的问题了,
我最近接触的项目代码中有这样几句
#ifdef DEBUG
static NSString *const kFPBaseUrl =@"http://(1)";
#else
static NSString *const kFPBaseUrl =@"http://(2)";
#endif
相信基本上每个项目里面都会有这几句
咋一看很简单,没错,就是很简单,就是一个测试服务器地址和生产服务器地址的切换。
但是问题就出在#ifdef DEBUG上,由于要改成生产服务器测试,所以我就开始找#defineDEBUG
但是我找遍了整个项目也没有找到,当时我就纳闷了。那要怎么去切换?后来我得人指点明白了。
原来这个#defineDEBUG可以算是Xcode集成的,其实当我们运行项目的时候可以有选择是运行 debug 或 release 版本。
如何选择?如下图
如上图,如果选择 debug 编译的话算是系统自行创建了#defineDEBUG然后下面你就知道了。。。
对于这个问题可能在有经验的人来说很简单,但是对于我们没有经验的或者没注意过的真还是有点帮助的。
在这里我还要说一点的是,关于在项目中肯定会有测试的服务器和生产的服务器,请求时用得地址接口肯定也不一样。
如果你不想麻烦在需要切换服务器是改动多个地方(而且容易出现错误),那么我建议你就只在这一个地方涉及请求接口
的更换和修改。这样做的好处就是改一个地方,所有的都会变,而且不容易出错,你还有什么理由不注意一下呢?
好了,今天就到这里。有错误欢迎指正,交流 —— LC.莫流觞