まず、iPhone アプリで作業しているので、通常の BSD アサート関数の代わりに NSAssert() を使用する必要があります。
例えばNSAssert(the_object, @"NIL object encountered");
NSAssert マクロはNSInternalInconsistencyException
、アサーションが失敗した場合、Objective-C 例外 ( ) をスローします。
目標は例外で中断することなので、次のステップは Xcode デバッガーを Objective-C 例外で中断させることです。これはおそらくどうでもいいことです。
[ブレークポイント] ウィンドウ ([実行] -> [表示] -> [ブレークポイント] メニュー項目) で、[シンボルをダブルクリック] と表示されている場所をクリックして、シンボルを入力します。-[NSException raise]
最後に注意すべきことは、リリース ビルドで NSAssert がコンパイルされないことです。つまり、アプリケーションで例外を処理する準備をするか、リリース ビルドでコンパイル アウトする独自のマクロを作成する必要があります。
実行時コードでアサーションをコンパイルするために使用するマクロを次に示します (その後、コードで NSAssert の代わりに HMAssert を使用することに注意してください)。
#ifdef DEBUG
# define HMAssert(A,B) NSAssert(A,B)
#else
# define HMAssert(A,B)
#endif
これには、DEBUG プリプロセッサ マクロを定義する必要があります。設定方法は次のとおりです。
- Xcode でプロジェクトを右クリックします。これは、プロジェクト ファイルがリストされている左側のパネルの一番上の項目になります。
- 表示されるコンテキスト メニューから [情報を見る] を選択します。
- 「ビルド」タブに移動します。
- 「構成」が「デバッグ」に設定されていることを確認します。
- 「GCC 4.2 - Preprocessing」の下の「Preprocessor Macros」の横のフィールドに DEBUG と入力します。