【Swift】Assertのあれこれ
今回はSwift
にあるassert
系メソッドのあれこれを調べていきたいと思います👷♀️
そもそもassertionとは?
プログラムの実行時に満たされるべき条件をチェックして、条件を満たしていない場合はプログラムを停止したり、エラーを吐いたりする仕組みのことを言います。
Swiftにはどのようなassertionメソッドがある?
Swift
のassertion
系のメソッドには下記のようなものがあります。
これらがどのように違うかを見ていく前に、Swift
の Optimization Level (最適化レベル)
を見ていきます。
Level | 内容 |
---|---|
-Onone | 開発時のデフォルトレベルで、最小限の最適化を実行し、デバック情報を保持します。 |
-O | リリース時のデフォルトレベルで、コンパイラーは積極的に最適化を実行し、デバック情報は圧縮されて出力されます。 |
-Ounchecked | 安全性を損なってでもパフォーマンスを向上させたいライブラリやアプリケーションの場合に使用するレベルです。危険な最適化レベルなので、基本的に使用することはありません。 |
ちなみに、ちょっと前に記事も書いています。
assert/assertionFailure
最適化レベルが -Onone
の場合に、条件の評価してプログラムを停止させることができます。
precondition/preconditionFailure
最適化レベルが -Onone
・-O
の場合に、条件を評価してプログラムを停止させることができます。
fatalError
全ての最適化レベルでプログラムを停止させることができます。
てな感じ本日も以上になります🍺