2

2 つの Objective-C クラスがあり、1 つはもう 1 つのクラスから派生しています。

@interface DerivedClass : BaseClass
{
}

以下のコード セクションは BaseClass に属します。

- (id)init {
    if (self = [super init]) {
       [self configure]; 
    }   
    return self;
}

- (void) configure{} //this is an empty method

コード セクションは DerivedClass に属します。

-(void) configure{
    NSLog(@"derived configure called");
}

さて、derivedInstance = [DerivedClass new];呼び出しスタックを見てみるconfigureと、派生クラスのメソッド[self configure]がベースのinitメソッドの行で呼び出されていることがわかります。

私は Objective-C 初心者であり、派生クラスのメソッドが基本クラスのメソッドから呼び出される方法について混乱しています。" self" キーワードは、一部の言語の " " キーワードと同じものであると説明されていますが、thisこの説明は完全に正しくないと思いますよね?

4

1 に答える 1

6

[self someMessage]のインスタンスである現在のオブジェクトにメッセージ「someMessage」を送信しますDerivedClass

メッセージのディスパッチは実行時に動的に行われるため、その時点でのオブジェクトと同じように動作します。

于 2011-03-30T11:29:49.063 に答える