在 Swift 中使用 #if、#endif(使用 Xcode)会在切入操作流程时产生错误。这个截图说明了一切:
有谁知道无需重复整个代码块两次即可使该示例正常工作的解决方案?很容易出现整个 block 非常大的情况。
编辑:我的样本有点太简单了。这是一个新示例,其中“else if”依赖于相同的定义 (DEBUG)。 “else if”也必须在#if 和#endif 中。其他样本可能比这复杂得多。
最佳答案
理想情况下,尽可能限制#if
的使用。使用预处理器指令总是有点代码味道。在这种情况下,您可以简单地使用 bool 变量:
#if DEBUG
let debug = true
#else
let debug = false
#endif
然后简单地使用变量:
var a = 0
var b = 0
...
else if debug && a == b {
}
在 Release模式下,代码将变得无法访问,优化器无论如何都会将其删除。
稍加想象,我们可以找到其他解决方案,例如,我们可以将检查移到函数中:
func isDebugCheck(a: Int, b: Int) -> Bool {
#if DEBUG
return a == b
#else
return false
#endif
}
或者我们可以将整个代码移动到一个单独的函数中,并将 if-else
替换为 return
(或 continue
,具体取决于您需要),例如:
if a == 7 {
...
return
}
#if DEBUG
if a == b {
return
}
#endif
if ...
关于使用#if、#endif 的 Swift 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55125009/