Den*_*eny 4 assert assertions swift
我在 Swift 中测试了断言,但我有点困惑。你能解释一下assert,assertionFailure和fatalError函数之间的区别吗?
我知道@noreturn属性(由 Seven Oglesby很好地解释了),但我不明白,这些函数什么时候被评估,什么时候被忽略。
函数assert并且fatalError仅在调试模式下发生,我测试了这种行为,这是真的。但assertionFailure也会在发布配置中停止程序。在文档中保持:
发生致命错误,程序执行应在调试模式下停止。在优化的构建中,这是一个 noop。
然后我不明白,为什么不忽略在非调试模式下对该方法的评估。有没有人有任何经验?
实际上,assert仅在调试模式下评估,但fatalError无论配置如何都会发生。这是故意的。
但是,assertionFailure无论配置如何,都会发生,尽管您引用了文档。据我所知,要么行为assertionFailure不正确,要么文档不正确。
| 归档时间: |
|
| 查看次数: |
2110 次 |
| 最近记录: |