前へ Xcc>Cocoa 次へ

いわゆるデバッガウィンドウ

とりあえず、30を選んでみる

デバッグ・デバッグ・デバッグ

 とりあえずポップアップメニューボタンで項目「30」を選んでみると、さっきの変なウィンドウが前にとびだしたはず。このウィンドウを使ってプログラムの実行状況を調べることができる。

で、よく見ると、さっき印を付けたところに赤い矢印が出ている。これは、 alpha アプリケーションを、この位置まで実行して止めている事を意味している。

 次に、ステップオーバーボタンを押すと1行だけ実行〜。

デバッガ

 とりあえず1発目はデバッガ抜きで動かす。儀式だから。たとえ OS 吹っ飛ばしても、しょうがないから、自分のやったことだから。

 最初からデバッガを起動しておいて、案の定ハングしたら、ほらねっとか、その姿勢がすか〜ん。

 ハイライトされてる行が一つ移動したはず。そこで変数の項目にある Locals の value を見てみると 1 が表示されている。

 つまり30を選んでるのに intValue は 1 を返しているってわけだ。見たいものは見たので、一時停止をとくために「続ける」ボタンを押す。

 次に、ポップアップメニューボタンで 100 を選んでみても value には 1 。どうやらポップアップメニューボタンの intValue は、どんな時も 1 を返すみたい。「続ける」ボタンを押す。

 今度はスライダー側からの動作を見てみる。スライダーを真ん中あたりにすると50前後の値が入るはず。これを setIntValue でポップアップメニューボタンに設定してるんだけど、結果はなにもかわらないということになる。

いったん終了。ふうっ。

 ということで、ポップアップメニューボタンはそのままでは使えないことがわかったわけですわ。

 だったらどうするか?

 てっとりばやいのは MyObject の myAction で片方の id をポップアップメニューボタン専用として処理することだけど、これだとせっかくの MyObject の汎用性が薄れてしまうんだよな〜。

 ということでサブクラス化ですな。

 なんだよ結局サブクラス化じゃん、なんですが、 MyObject がテキストフィールドやスライダーを差し替えることはあいかわらず可能なので、以前のサブクラス化とは少し意味が違うということでひとつ。

ま、とりあえずサブクラス化いってみよう。