XcodeでConverterControllerクラスの内側にConverterクラスのインスタンスを作成します。
「グループとファイル」サイドバーのClassesフォルダでConverterController.hをダブルクリックして、これをエディタウインドウで開きます。
アウトレットが宣言されているコードの直後、閉じ括弧の前に、次の行を追加することにより、Converterオブジェクトへのポインタを宣言します。
Converter *converter; |
クリックされると、「Convert」ボタンはconvert:メッセージをConverterControllerオブジェクトに送信します。ConverterControllerのconvert:メソッドの定義を完成させて、convertCurrencyメッセージをConverterインスタンスに送信して変換を実行できるようにします。
ConverterControllerがConverterオブジェクトをインスタンス化できるように、Converter.hをインポートします。ConverterController.hの最初のimport文の下に、次の行を追加します。
#import "Converter.h" |
ClassesグループでConverterController.mをダブルクリックして、エディタウインドウにこのファイルを開きます。
リスト 5-1のハイライトされている行を、ConverterController.mに挿入します。
リスト 5-1 ConverterController.mでのconvert:メソッドの定義
#import "ConverterController.h" |
@implementation ConverterController |
- (IBAction)convert:(id)sender { |
float amount; |
converter = [[Converter alloc]init]; // 1 |
[converter setSourceCurrencyAmount:[dollarField floatValue]]; // 2 |
[converter setRate:[rateField floatValue]]; // 2 |
amount = [converter convertCurrency]; // 3 |
[amountField setFloatValue:amount]; // 4 |
[rateField selectText:self]; // 5 |
} |
@end |
convert:メソッドは次の処理を行います。
Converterオブジェクトを初期化します。
Converterクラスのメンバ変数を、rateFieldおよびdollarFieldテキストフィールドの値に設定します。
convertCurrencyメッセージをconverterポインタによって参照されるオブジェクトに送信し、返された値を取得します。
setFloatValue:を使って、返された値を「Amount in Other Currency」テキストフィールド(amountField)に書き出します。
selectText:メッセージをレートのフィールドに送信します。その結果、フィールド内のテキストが選択されます。テキストがない場合は、テキストフィールドに挿入ポイントが置かれ、ユーザはほかの計算を開始できる状態になります。
convert:メソッドの各コード行は、浮動小数点変数の宣言を除き、メッセージです。メッセージ式の左辺の「単語」が、そのメッセージを受け取るオブジェクト(レシーバといいます)を識別します。これらのオブジェクトは、定義と接続を行ったアウトレットによって識別されます。レシーバの後に、送信側のオブジェクト(送信元といいます)がレシーバに実行させたいメソッドの名前が続きます。メッセージの結果として、多くの場合は値が返されます。上記の例では、ローカル変数amountに返される値が保持されます。
Last updated: 2008-01-24