iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【Swift】Assertのあれこれ

今回はSwiftにあるassert 系メソッドのあれこれを調べていきたいと思います👷‍♀️

そもそもassertionとは?

プログラムの実行時に満たされるべき条件をチェックして、条件を満たしていない場合はプログラムを停止したり、エラーを吐いたりする仕組みのことを言います。

Swiftにはどのようなassertionメソッドがある?

Swiftassertion系のメソッドには下記のようなものがあります。

これらがどのように違うかを見ていく前に、SwiftOptimization Level (最適化レベル) を見ていきます。

Level 内容
-Onone 開発時のデフォルトレベルで、最小限の最適化を実行し、デバック情報を保持します。
-O リリース時のデフォルトレベルで、コンパイラーは積極的に最適化を実行し、デバック情報は圧縮されて出力されます。
-Ounchecked 安全性を損なってでもパフォーマンスを向上させたいライブラリやアプリケーションの場合に使用するレベルです。危険な最適化レベルなので、基本的に使用することはありません。

ちなみに、ちょっと前に記事も書いています。

yamato8010.hatenablog.com

assert/assertionFailure

最適化レベルが -Onone の場合に、条件の評価してプログラムを停止させることができます。

precondition/preconditionFailure

最適化レベルが -Onone-O の場合に、条件を評価してプログラムを停止させることができます。

fatalError

全ての最適化レベルでプログラムを停止させることができます。

てな感じ本日も以上になります🍺

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com