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