首页 > 代码库 > IOS #ifdef 的那些事儿

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.莫流觞