3 回答
TA贡献1772条经验 获得超5个赞
在Swift中,您仍然可以使用“#if /#else /#endif”预处理器宏(尽管更受限制),如Apple文档所述。这是一个例子:
#if DEBUG
let a = 2
#else
let a = 3
#endif
现在,您必须在其他位置设置“DEBUG”符号。将它设置在“Swift Compiler - Custom Flags”部分,“Other Swift Flags”行中。您可以使用-D DEBUG条目添加DEBUG符号。
(构建设置 - > Swift编译器 - 自定义标志)
像往常一样,您可以在Debug或Release中设置不同的值。
我用实际代码测试了它; 它似乎没有在操场上得到认可。
TA贡献1842条经验 获得超12个赞
我们遇到了一个不想设置swift编译器标志的问题,因为我们不想设置它们并让它们保持最新的不同目标等。另外,在我们的混合代码库中,我们不想记住为每种语言始终适当地设置标志。
对于我们,我们在ObjC中声明了一个文件
PreProcessorMacros.h
extern BOOL const DEBUG_BUILD;
在他们中
PreProcessorMacros.m
#ifdef DEBUG
BOOL const DEBUG_BUILD = YES;
#else
BOOL const DEBUG_BUILD = NO;
#endif
然后,在您的Objective-C桥接标题中
#import "PreProcessorMacros.h"
现在,在Swift代码库中使用它
if DEBUG_BUILD {
println("debug")
} else {
println("release")
}
这绝对是一种解决方法,但它解决了我们的问题所以我在这里发布它希望它会有所帮助。这并不意味着现有答案无效。
TA贡献1848条经验 获得超2个赞
Logans方法更加巧妙的解决方案。设置目标的构建设置-D DEBUG中Other Swift Flags的Swift Compiler - Custom Flags部分。
然后在全局范围内声明以下方法:
#if DEBUG
let isDebugMode = true
#else
let isDebugMode = false
#endif
现在用它作为
if isDebugMode {
// Do debug stuff
}
- 3 回答
- 0 关注
- 575 浏览
添加回答
举报