Debug 模式与 Release 模式的区分

608 阅读1分钟
原文链接: tips.producter.io

区分 Debug 模式与 Release 模式有两种方法:

第一种方法:

在 (Build Settings -> Swift Compiler - Custom Flags) 中加入 -DDEBUGStackoverflow

但是在 NSHipster 中有提到不推荐此方法 Avoiding -DDEBUG in Swift

第二种方法

通过 Preprocessor Macros (预处理宏命令) 来区分模式。

1.新建一个 PreProcessorMacros.h 文件,代码如下

#import 

@interface PreProcessorMacros : NSObject

#ifndef PreProcessorMacros_h
#define PreProcessorMacros_h

extern BOOL const DEBUG_BUILD;

#endif

@end


@implementation PreProcessorMacros

#ifdef DEBUG
    BOOL const DEBUG_BUILD = YES;
#else
    BOOL const DEBUG_BUILD = NO;
#endif

@end

2.在 Bridged Header: #import "PreProcessorMacros.h"

也可直接把步骤一的代码放进 Bridged Header

3.测试

if DEBUG_BUILD {  
    print("It's Debug build")
} else {
    print("It's Release build")
}

⌘⇧< 进入下图可模式切换

原理

关键的代码在:

#ifdef DEBUG
    BOOL const DEBUG_BUILD = YES;
#else
    BOOL const DEBUG_BUILD = NO;
#endif

此处的 DEBUG 究竟来自哪?

进入 'Build Settings' -> 搜索 'Preprocessor Macros',真相大白



源码:DEBUGBUILD

抽取于干货极多的:Reader Submissions - New Year's 2016 🍺