【发布时间】:2019-02-11 20:56:01
【问题描述】:
我在 Google Analytics 的实施说明中遇到了这个:
guard let gai = GAI.sharedInstance() else {
assert(false, "Google Analytics not configured correctly")
}
我从没想过可以在 else 子句中进行断言而不返回。这对我来说没有意义,因为断言只会在测试方案中进行评估。那么,为什么编译器不警告它不返回(在发布版本的情况下)。
编辑:这是在函数application(_:didFinishLaunchingWithOptions) -> Bool内
编辑 2:我在此找到的附加信息可以回答它:
不幸的是,一旦您进行发布构建,它就会中断, 因为断言在发布配置中被删除,并且一个警卫 块必须结束当前作用域的执行。
【问题讨论】:
-
guard let 和 if let 的用法相似但不一样。你不必在 guard let 的 else 块中返回。你可以检查一下。理解这两个概念很有帮助..stackoverflow.com/questions/32256834/swift-guard-vs-if-let
-
实际上这应该无法在发布版本中编译(在我的快速测试中也是如此)。
标签: ios swift guard-statement