swift - Swift 语言中的 #ifdef 替换

标签 swift xcode preprocessor preprocessor-directive

在 C/C++/Objective C 中,您可以使用编译器预处理器定义宏。 此外,您可以使用编译器预处理器包含/排除代码的某些部分。

#ifdef DEBUG
    // Debug-only code
#endif

Swift 中有类似的解决方案吗?

最佳答案

是的,你可以做到。

在 Swift 中,您仍然可以使用“#if/#else/#endif”预处理器宏(尽管受到更多限制),如 Apple docs 。这是一个例子:

#if DEBUG
    let a = 2
#else
    let a = 3
#endif

现在,您必须在其他地方设置“DEBUG”符号。在“Swift Compiler - Custom Flags”部分的“Other Swift Flags”行中设置它。您可以使用 -D DEBUG 条目添加 DEBUG 符号。

像往常一样,您可以在调试或发布时设置不同的值。

我在真实代码中测试了它并且它有效;不过,它在 Playground 上似乎无法被识别。

您可以阅读我的原帖here .

<小时/>

重要提示: -DDEBUG=1 不起作用。只有 -D DEBUG 有效。编译器似乎忽略了具有特定值的标志。

关于swift - Swift 语言中的 #ifdef 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33899581/

相关文章:

xcode - iOS9 共享扩展无法在 Xcode 上调试

ios - Xcode 6 - 用于通用图像支持的 xcassets

javascript - 通过预处理运行 javascript

swift - 无法预览此文件,应用程序可能已崩溃 -- 输入特定代码行时发生

ios - 在 iOS 应用程序中显示来自 URL 的图像

ios - 使用地址通过谷歌地图创建路线(没有经纬度)

ios - Swift:无法将按钮添加到 ABPersonViewController 的导航栏

python - 使用 Python 制作预处理器

java - 针对不同版本的 Java 代码或预处理进行细微更改?

ios - 有没有一种方法可以在 Swift 开关中检查多个条件?