2009-05-27 7 views
4

初めてのポスターですので、やさしくしてください。現在のオブジェクトのメソッドを参照する

Objective-Cの現在のオブジェクトのメソッドをどのように参照していますか? Javaのようなものがありますか?のキーワードですか?ここで

は、明確にするために、いくつかの偽のコードです:

Javaでは
@implementation FooBard 
- (void) foo { 
    i = 1 
    m = [this bar: i]; 
} 

- (int) bar: int j { 
    k = j - 1; 
    return (k); 
} 
@end 

私はちょうどthis.bar()をするでしょうし、それを使って行うこと。

ありがとうございました。

ビル

答えて

4
m = [self bar:i]; 
+0

が動作します。ありがとうございました。 – bkoch

+0

短くて甘い;-) – Abizern

2

すべてのObjective-Cのメソッドは、現在のインスタンスを指すタイプidのスタック変数であるselfと呼ばれる暗黙のパラメータを得ます。実際、最初の2つのパラメータがタイプidSEL(以下を参照)であれば、どのC関数もObjective-Cメソッドとして使用できます。

selfはObjective-Cの予約キーワードではありません(this、Java)。たとえば、メソッド内でselfを再割り当てすることができます。

-(id)init { 
    if((self = [super init])) { 
    // do initialization here 
    } 

    return self; 
} 

が、selfを再割り当てすることはほとんど他のコンテキストで使用されていない:これはinit方法で標準パターンです。

selfは、指定した例で他の任意の変数id[self bar:i]と同様に使用できます。

完全性のために、すべてのObjective-Cメソッドは、呼び出されているメソッドのセレクタ(タイプSEL)である_cmdという暗黙パラメータも取得します。詳細はObjetive-C Runtime Referenceをご覧ください。

+0

_cmdはNSLogステートメントで使用するのに適しています。 NSLog(@ "%s:私のメッセージとオブジェクト:%@"、_ cmd、myObject)など。 – Abizern

関連する問題