在C/C++/Objective-C中,您可以使用编译器预处理器定义宏.此外,您可以使用编译器预处理器包含/排除代码的某些部分.
#ifdef DEBUG
// Debug-only code
#endif
Run Code Online (Sandbox Code Playgroud)
Swift中有类似的解决方案吗?
println()如果我不在Debug构建中,我想全局忽略我的Swift代码中的所有调用.我找不到任何有力的分步说明,并希望得到指导.有没有办法在全球范围内做到这一点,还是我需要println()用#IF DEBUG/#ENDIF语句包围每一个?
有没有办法让应用程序崩溃并在运行时刻录print()?print()在Swift运行时中使用'd'实现覆盖preconditionFailure("STOP using print()").
基本上它是巴甫洛夫团队正在训练的狗训练的一部分:我希望人们使用debugPrint而不是打印来仅在调试版本中污染控制台.
UPD20180525:亚光是正确的:打印输出不会转到真实设备的实时控制台,它不知何故最终只能在lldb控制台上.
NSLog输出思想是否会转到设备的控制台,因此需要在运行时或非编译构建时编译的是NSLog
这是实际需要的:
#if DEBUG
#else
public func NSLog(_ format: String, _ args: CVarArg...)
{
}
#endif
Run Code Online (Sandbox Code Playgroud)
(因为没有真正需要摆脱在发布版本中无害的打印)