4
我在Swift中测试了断言,但我有点困惑。你能否向我解释一下assert
,assertionFailure
和fatalError
函数之间的区别?Swift中的断言
我知道@noreturn
属性(nicely explained由Seven奥格尔斯比),但我不明白,什么时候评估这些函数,什么时候它们被忽略。
函数assert
和fatalError
仅在调试模式下出现,我测试了这种行为,它是真的。但是assertionFailure
也会在发布配置中停止程序。在文档中:
发生致命错误,程序执行应在调试模式下停止。在优化版本中,这是一个noop。
然后我不明白,为什么不评估这种方法在非调试模式下被忽略。有没有人有任何经验呢?
对我来说'fatalError'只在调试模式下才会发生。 – Deny 2015-02-11 22:30:19
这更奇怪,因为对于我来说'fatalError'绝对可以在发布模式下工作。 – andyvn22 2015-02-11 23:45:32
我在Xcode 6.2中试过这个,现在'fatalError'也在我的发布模式下工作。 – Deny 2015-03-15 11:37:28