修正日: 07/07/07
練習問題7
ヒント
ヒントはウィンドウ上のオブジェクトから受け取るアクションについてです。練習問題5で扱ったアクションの例を見てみましょう。
- (IBAction)calcBMI:(id)sender
{
[bmiField setFloatValue:
calculateBMI([heightField floatValue], [weightField floatValue])];
}
これは「BMIを計算せよ」というメソッドです。身長と体重をテキストフィールドから取り出してBMIを計算し、結果をテキストフィールドにセットしています。このメソッドの返り値「IBAction」は「void」つまり返り値は無し、を表しているということは「Become An Xcoder」で学びました。ではこのメソッドの引き数「sender」とはなんでしょうか?
これは実は「このアクションを呼び出したオブジェクト」です。その名の通り「メッセージのsender(送った人)」ということです。ボタンを押して何かを実行しようとした場合はそのNSButtonオブジェクト、このcalcBMI:アクションであれば変更された(体重か身長の)テキストフィールドです。
ちなみにこのsenderの型「id」というのは「NSObjectかそのサブクラスの何かのオブジェクトへのポインタ」という型です。つまり「NSButton *」でも「NSTextField *」でもなんでも「id」で表すことができます(「id *」では無いことに注意してください。idと書いた時点で既に、何かのオブジェクト「へのポインタ」を意味します)。
練習問題7はこのsenderをうまく使ってあげないとクリアできません。よく考えてみてください。