メソッドは、そのオブジェクトのクラスによって(クラスメソッドの場合は、特定のインスタンスには結び付いていない機能を提供するために)実装されるプロシージャです。メソッドはパブリックとプライベートが考えられます。パブリックメソッドはクラスヘッダファイルで宣言されます。メッセージは、メソッドを名前で識別するオブジェクトのメソッドの呼び出しです。
メッセージ式は、受信側オブジェクトを識別する変数と、呼び出し対象のメソッド名で構成され、これらを大括弧で囲んで指定します。
[anObject doSomethingWithArg:this];
標準Cと同様に、文はセミコロンで終了します。
メッセージの結果として、多くの場合は呼び出されたメソッドから値が返されます。したがって、この値を受け取るために、適切な型の変数を代入式の左辺に指定する必要があります。
int result = [anObj calcTotal];
メッセージ式は、他のメッセージ式の内側にネストすることができます。次の例では、フォームオブジェクトのウインドウを取得し、返されたNSWindowオブジェクトを別のメッセージのレシーバに指定しています。
[[form window] makeKeyAndOrderFront:self];
メソッドは、関数のように構造化されています。メソッドの完全な宣言の後に、実装するコードの本体が大括弧で囲まれて続きます。
NULLオブジェクトを指定するにはnilを使います。つまりnilはNULLポインタのように機能します。Cocoaのメソッドのいくつかは、引数としてnilを受け付けません。
メソッドは、2つの暗黙の識別子を有効に参照することができます。すなわち、selfとsuperです。どちらもメッセージを受け取るオブジェクトを識別しますが、メソッドの実装を見つける方法が異なります。selfはレシーバのクラス内で検索を開始しますが、superは、レシーバのスーパークラス内で検索を開始します。つまり、
[super init];
の場合は、スーパークラスのinitメソッドが呼び出されます。
メソッドを使うと、クラスのインスタンスのインスタンス変数に直接アクセスできます。ただし、パフォーマンスを最優先する場合を除き、直接アクセスではなくアクセスメソッドを使うことが推奨されます。
Last updated: 2008-01-24