【问题标题】:Assertions in SwiftSwift 中的断言
【发布时间】:2015-02-08 12:57:59
【问题描述】:

我在 Swift 中测试了断言,但我有点困惑。你能解释一下assertassertionFailurefatalError函数之间的区别吗?

我知道 @noreturn 属性(nicely explained by Seven Oglesby),但我不明白这些函数何时评估以及何时被忽略。

函数assertfatalError 仅在调试模式下发生,我测试了这种行为,这是真的。但是assertionFailure 也会在发布配置中停止程序。在文档中停留:

发生致命错误,程序执行应在调试模式下停止。在优化的构建中,这是一个小问题。

那我就不明白了,为什么在非调试模式下对这个方法的评估不被忽略。有人有这方面的经验吗?

【问题讨论】:

    标签: swift assert assertions


    【解决方案1】:

    实际上,assert 仅在调试模式下进行评估,但 fatalError 无论配置如何都会发生。这是故意的。

    但是,assertionFailure 也会发生,无论配置如何,尽管您引用了文档。据我所知,assertionFailure 的行为不正确,或者文档不正确。

    【讨论】:

    • 对我来说fatalError 仅在调试模式下出现。
    • 这更奇怪,因为对我来说fatalError 绝对可以在发布模式下工作。
    • 我在 Xcode 6.2 中试过这个,现在 fatalError 也可以在发布模式下工作。
    • 谢天谢地!现在这很有意义:assertassertionFailure 仅用于调试,preconditionfatalError 用于所有配置。
    猜你喜欢
    • 2015-07-17
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多