###在Objective-C项目中,经常会这样使用1
2
3
4
5#ifndef DEBUG
#define ABC abc
#else
#define XYZ xyz
#endif
这样在Debug模式下就会定义第一个宏,非Debug模式下就定义第二个宏
###在Swift项目中条件编译的方法
- PROJECT这样设置
把红框中的Configuration的名字改成你需要的名字就行了,主要是用作区分
- TARGET这样设置
PROJECT中设置的新Configuration名字在这边就会对应显示了
1.在Debug模式下,需要定义Debug这个宏,双击红框区域然后输入 -DDebug,选择编译模式为Debug时,系统就会提供这个宏
2.同样,在新建的Configuration上面输入 -D+宏名。我选择建立了一个Staging的宏
建立新Scheme
- 菜单中选择
Product -> Scheme -> EditScheme
当前默认为名称为与工程名称的Scheme,点击
Duplicate Scheme
,将当前Scheme复制2次得到2个新Scheme在
Manage Scheme
中把3个Scheme名称改成你想要的,例如可以改成这样在
EditScheme
中如下设置Build Configuration
选项点开左边箭头的选项,每一个选项顺序选择相应顺序的
Build Configuration
这样就完成了设置,我选择MVVM -Debug
这个Scheme,编译时系统会定义Debug
这个宏
同样我选择MVVM -Debug -Staging
的时候,就有Debug
和Staging
这2个宏了
- Build的时候在这里选择不同的Scheme
条件编译的代码
设置Debug宏,为了只在Debug模式下才打印输出log
设置Staging,为了在Debug模式下区分服务器正式服和测试服地址
- 在Log中设置
1 | func DLog(logMessage: Any, file: String = __FILE__, function: String = __FUNCTION__, line: Int = __LINE__) { |
- 在服务器地址定义中设置
1 | #if Staging |
使用
按以上顺序选择不同Scheme来Build,会得到以下效果:
1.Debug模式下使用测试服务器
2.Debug模式下使用正式服务器
3.Release模式,不输出Log信息,使用正式服务器