Dre*_*rew 2 ios swift guard-statement
我在Google Analytics的实施说明中遇到了这个问题:
guard let gai = GAI.sharedInstance() else {
assert(false, "Google Analytics not configured correctly")
}
Run Code Online (Sandbox Code Playgroud)
我从来没有想过可以在else子句中有一个断言,而不返回.这对我来说没有意义,因为断言只会在测试方案中进行评估.那么,为什么编译器不警告它不返回(在发布版本的情况下).
编辑:这是在功能范围内 application(_:didFinishLaunchingWithOptions) -> Bool
编辑2:我发现的其他信息可以解答它:
不幸的是,一旦你进行发布构建,这将会中断,因为在发布配置中删除了断言,并且一个保护块必须结束当前作用域的执行.
通常,guard语句将使用以下之一:
但是,您也可以使用非返回功能.
这是fatalError发挥作用的地方.您甚至可以使用Never return类型创建自己的自定义.
对于OP点,将在调试中编译,但在发布版本中失败.
OP可以重写以下内容并使其工作:
guard let gai = GAI.sharedInstance() else {
fatalError("Google Analytics not configured correctly")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |