swiftベース-アサーション(Assertion)

1559 ワード

オプションのタイプでは、値が存在するかどうかを判断し、コード内で値が欠落している場合を優雅に処理できます.しかし、場合によっては、値が欠落しているか、値が特定の条件を満たしていない場合は、コードが実行されない可能性があります.この場合、コードに*アサーション*をトリガーして、コードの実行を終了し、デバッグによって値の欠落の原因を見つけることができます.
アサーションを使用してデバッグ####
断言は、実行時に論理条件が*true*であるかどうかを判断します.文字通り、「断言」の条件が本当かどうかを断言する.他のコードを実行する前に、いくつかの重要な条件が満たされていることを保証するには、断言を使用します.条件がtrueと判断された場合、コードの実行は続行されます.条件がfalseと判断された場合、コード実行が終了し、あなたのアプリケーションが終了します.
もしあなたのコードがデバッグ環境で断言をトリガーした場合、例えばXcodeでアプリケーションを構築して実行すると、不正な状態がどこで発生しているかを明確に見ることができ、断言がトリガーされたときのアプリケーションの状態をチェックすることができます.また、デバッグ情報を追加できると断言します.
グローバルassert(::file:line:)関数を使用して、断言を書くことができます.この関数にtrueまたはfalseの結果を表す式と、falseの結果を表す情報が入力されます.この情報は、式の結果がfalseの場合に表示されます.
let age = -3
assert(age >= 0, "A person's age cannot be less than zero") 
//    age < 0,       

この例では,age>=0がtrueの場合,すなわちageの値が負でない場合にのみコードが実行される.ageの値が負数の場合、コードのようにage>=0がfalseであり、断言がトリガーされ、適用が終了する.
断言情報を必要としない場合は、以下のように省略できます.
 assert(age >= 0)

注意:コードが最適化コンパイルを使用する場合、ブレークスルーは無効になります.たとえば、Xcodeでデフォルトのtarget Release構成オプションを使用してbuildを使用する場合、ブレークスルーは無効になります.
いつアサーションを使用するか###
条件が偽である可能性がある場合は、断言を使用しますが、最終的には条件が真であることを保証しなければなりません.これにより、コードが実行されなくなります.断言の適用状況:
  • 整数タイプの下付きインデックスは、カスタム下付きインデックス実装に渡されるが、下付きインデックス値が小さすぎるか、大きすぎる可能性がある.
  • は、関数に値を入力する必要がありますが、不正な値は、関数が正常に実行されない可能性があります.
  • オプションの値は*nil*になりますが、後続のコードの実行にはnil以外の値が必要です.

  • 注意:断言はアプリケーションの実行を終了させる可能性があるので、不正な条件が現れないようにコードを注意深く設計する必要があります.しかし、アプリケーションが公開される前に、不正な条件が発生する場合があります.この場合、断言を使用して問題を迅速に発見することができます.