Objective-Cのメソッドについて

Konton's iPhone application labolatory

English top page

メソッドファイルにはそのクラス(オブジェクト)が持つ命令が書かれています。BASICでいうならサブルーチン、CやC++,VisualBasicで言えば関数といったものに該当します。 そのなかに一連の手順を書き込みます。そのメソッドの書き方は、他の言語に馴染みがある人から見ると少し特殊なものであり、

-(戻り値の型)メソッド名:(引数1の型)引数1の名前 引数2の説明文:(引数2の型)引数2の名前…

という書かれ方になっています。引数が1個も無い場合には、メソッド名の右のコロン以降は全てなしになります。 その直後にくる中括弧で閉じた内部にそのメソッドで実行したいコードを記述します。C言語と同じ部分としては、戻り値はreturnのあとに変数名を書くというのがあります。 戻り値が無い場合でも、returnはそのメソッドからの脱出に使えます。何かの条件によっては実行する必要のない命令などがある場合、 retuneでとっとと戻ってそれらの部分をスキップすることもできるわけです。returnの右には値の戻ってくるメッセージをそのまま記述しておくことも出来ます。

これらのメソッドは自分自身で呼び出すことや、メソッド内で他のオブジェクトのメソッドを実行することも出来ます。 そのためには相手のオブジェクトへメッセージを送ります。通常メッセージは[ ]で囲まれた形で書き、以下のような感じになります。

[オブジェクトの変数名 メソッド名:引数1 引数2の説明文:引数2…];

オブジェクトの変数名は自分自身の場合だとselfになります。 他のオブジェクトにメッセージを送る場合に、コンパイル時に警告が出ないようにするには条件があります。 それはヘッダファイルでそのメソッドが宣言されているということです。ただ、警告は出ますがデフォルトの設定だとそのままプログラムは走ります。 メソッドファイルにそのメソッドが存在しなかった場合には、ヘッダでの宣言の有無に関わらずプログラムが停止します。 メッセージの送り方にはもう一つの書き方があります。その書き方は以下のような感じになります。

objc_msgSend(オブジェクトの変数名, @selector(メソッド名:), 引数1, 引数2…);

この場合、もしメソッドが1個も引数を持たない場合には、メソッド名の右にコロンは書きません。 また、こちらの表記ではコンパイル時のチェックは全く働かないため、ヘッダに宣言が無くても警告は出ません。 先ほどと同じく、メソッドファイルにそのメソッドが存在しなかった場合にはプログラムが停止します。

前へ次へ
Copyright© 2009 Konton All rights reserved. - このサイトについて - サイトマップ

Valid XHTML 1.1 正当なCSSです!