ホーム

トップ
準備
Become An Xcoder

練習問題0
練習問題1
練習問題2
練習問題3
練習問題4
練習問題5
練習問題6
練習問題7
練習問題8
練習問題9
練習問題10
練習問題11
練習問題12
練習問題13
練習問題14
練習問題15

C言語補習1
C言語補習2
C言語補習3

推薦図書
ブックマーク

最後に

掲示板

Cocoa Docs

自作ソフトいろいろ




修正日: 07/10/19  

練習問題12  

 CalcBMIみたいなのを作ってみよう! その8 後編


 次に右上の変数表示欄に注目してください。以下は「loadUserDefaults」の最初の行で止めた状態です。



 Localsの下にはaDefaultという変数が表示されています。このLocalsには現在表示している関数やメソッドのローカル変数の一覧が表示されます。このメソッドの中ではNSUserDefaultsのインスタンス(へのポインタ)のaDefaultという変数一つだけ使っているので、それが一つだけ表示されているわけです。aDefaultはポインタなので値の欄にはメモリアドレスが表示されます。
 次にArgumentsの方を見ると「self」という変数があります。これはこのメソッドを実行しているオブジェクトそれ自体のポインタ、つまりBMIControllerのインスタンスです。selfの中身を見てみましょう。



 見知った変数名が並んでいますね。BMIControllerのインスタンス変数の名前が並んでいます。BMIController.hをチェックしてみてください。「IBOutlet id」型のオブジェクトはそのオブジェクトへのポインタが、float型の変数はその値が表示されます。まだ数値を初期化していないので、height、weight、bmiの値はそれぞれ0のはずです。
 では五行ほど実行してみましょう。「if([aDefault floatForKey:@"weight"])」の手前まで実行します。三回ステップオーバーボタンを押せばOKのはずです。



 heightの値が初期化されて変わったでしょうか。値が変わるとわかりやすいように赤字で表示されます。上記のスクリーンショットではheightは初期設定からデータが読み込まれて183.059204になりました。同様にweightの方も初期化されることを確認してください。



 各変数の内容(特にオブジェクトの概要)をコンソールに表示することができます。調べたい変数を選択して右クリックで「説明をコンソールに表示する」を選択すると、選択中の変数の説明がデバッガコンソールに表示されます。





 NSArrayやNSDictionaryなどのオブジェクトの場合中身が表示されますし、少なくともオブジェクトがどのクラスのインスタンスか程度はわかります。オブジェクトの場合、あたいにポインタしか表示されないことが多いので、この機能で中身をチェックすることが重要になります。

 デバッグで一番重要なのはこのような機能です。細かく説明していったらきりがないのでとりあえずこの辺で終わりにします。

 最後に今回の課題です。まずこちらからサンプルをダウンロードしてください。いくつかバグが仕込んでありますので、ソースコードの比較をするのではなく、デバッガを使ってバグを修正してみてください。

解答はこちら