在快速之前,我将为alpha,beta和分发版本定义一组方案.这些方案中的每一个都有一组宏,这些宏被定义为在项目级别处理某些行为.最简单的示例是DEBUG = 1宏,默认情况下为Run构建的默认方案中的所有Xcode项目定义.人们可以查询#ifdef DEBUG ...并相应地在代码中做出决定,甚至编译出非必要的代码.
看起来这种类型的配置选通并不像使用swift那么容易,因为不支持宏.有人可以建议一个类似的方法,我不在乎代码是否编译出来,本身.不过,我想基于构建方案来构建功能.
Jea*_*nan 458
在Swift中,您仍然可以使用"#if /#else /#endif"预处理器宏(尽管更受限制),如Apple文档所述.这是一个例子:
#if DEBUG
let a = 2
#else
let a = 3
#endif
Run Code Online (Sandbox Code Playgroud)
现在,您必须在其他位置设置"DEBUG"符号.将它设置在"Swift Compiler - Custom Flags"部分,"Other Swift Flags"行中.您可以使用-D DEBUG
条目添加DEBUG符号.
(构建设置 - > Swift编译器 - 自定义标志)
像往常一样,您可以在Debug或Release中设置不同的值.
我用实际代码测试了它; 它似乎没有在操场上得到认可.
Log*_*gan 33
我们遇到了一个不想设置swift编译器标志的问题,因为我们不想设置它们并让它们保持最新的不同目标等.另外,在我们的混合代码库中,我们不想记住为每种语言始终适当地设置标志.
对于我们,我们在ObjC中声明了一个文件
PreProcessorMacros.h
extern BOOL const DEBUG_BUILD;
Run Code Online (Sandbox Code Playgroud)
在他们中
PreProcessorMacros.m
#ifdef DEBUG
BOOL const DEBUG_BUILD = YES;
#else
BOOL const DEBUG_BUILD = NO;
#endif
Run Code Online (Sandbox Code Playgroud)
然后,在您的Objective-C桥接标题中
#import "PreProcessorMacros.h"
Run Code Online (Sandbox Code Playgroud)
现在,在Swift代码库中使用它
if DEBUG_BUILD {
println("debug")
} else {
println("release")
}
Run Code Online (Sandbox Code Playgroud)
这绝对是一种解决方法,但它解决了我们的问题所以我在这里发布它希望它会有所帮助.这并不意味着现有答案无效.
Logans方法更加巧妙的解决方案.设置目标的构建设置-D DEBUG
中Other Swift Flags
的Swift Compiler - Custom Flags
部分.
然后在全局范围内声明以下方法:
#if DEBUG
let isDebugMode = true
#else
let isDebugMode = false
#endif
Run Code Online (Sandbox Code Playgroud)
现在用它作为
if isDebugMode {
// Do debug stuff
}
Run Code Online (Sandbox Code Playgroud)
对我来说,将“ Active Compilation Condition ”的调试项设置为“DEBUG”是有效的。
然后使用 DEBUG 键可以在 #IF DEBUG 在调试模式下工作,在发布模式下使用 #ELSE:
选择你的目标,
在“构建设置”选项卡中搜索“活动编译条件”,
将其“Debug”项的值设置为“YourKeyWord”,
简单使用如下:
#if DEBUG
print("You'r running in DEBUG mode!")
#else
print("You'r running in RELEASE mode!")
#endif
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
58462 次 |
最近记录: |