|
|
Log In | Not a Member? |
Contact ADC |
| < 前ページ次ページ > |
objc_msgSendはメソッドを実装するプロシージャを見つけると、そのプロシージャを呼び出し、メッセージのすべての引数を渡します。また、次の2つの隠し引数をプロシージャに渡します。
これらの引数はすべてのメソッド実装に、当該実装を呼び出したメッセージ式の両方の構成要素に関する明確な情報を提供します。それらの引数は、メソッドを定義するソースコードで宣言されないため、「隠し」引数と呼ばれています。これらは、コードのコンパイル時に実装に挿入されます。
これらの引数は明示的には宣言されませんが、ソースコードは(受信側オブジェクトのインスタンス変数を参照できるのと同じように)隠し引数を参照することができます。メソッドは受信側オブジェクトをselfとして、自身のセレクタを_cmdとして参照します。次の例では、_cmdはstrangeメソッドのセレクタを参照し、selfはstrangeメッセージを受信するオブジェクトを参照します。
- strange |
{ |
id target = getTheReceiver(); |
SEL method = getTheMethod(); |
if ( target == self || method == _cmd ) |
return nil; |
return [target performSelector:method]; |
} |
この2つの引数のうち、selfのほうが有用です。実際、これは受信側オブジェクトのインスタンス変数を、メソッド定義で利用可能にする方法です。
| < 前ページ次ページ > |
Last updated: 2007-10-31
|
Get information on Apple products.
Visit the Apple Store online or at retail locations. 1-800-MY-APPLE Copyright © 2007 Apple Inc. All rights reserved. | Terms of use | Privacy Notice |