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/24003291/

相关文章:

ios - 尝试转换为 NSFetchedResultsController "fatal error: unexpectedly found nil while unwrapping an Optional value"?

ios - 我应该在tableView中写什么(_ :cellForRowAtIndexPath:) method to custom cells?

xcode 提交丢失的文件或目录

gcc - GCC中汇编文件的for循环宏/预处理器

c - 是否可以从预处理器转换为数组?

java - 一种扩展java语法的简单方法

swift - Firestore 批处理设置仅插入最后一项

swift - 蒙戈小猫 : Find using contains

ios - 是否有适用于 iOS 8 UI 布局的 Kitchen Sink?

ios - UIPickerView - 用于计算的值传递