Objective-C中的简单继承问题

时间:2011-03-30 11:26:06

标签: objective-c inheritance message self

我有两个Objective-C类,一个来自另一个

@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]的{​​{1}}行被调用方法。

我是一个Objective-C菜鸟,我对如何从基类的方法调用派生类的方法感到困惑。 “init”关键字被解释为与某些语言的“self”关键字相同,但我认为这种解释并不完全正确,对吧?

1 个答案:

答案 0 :(得分:6)

[self someMessage]会将消息“someMessage”发送到当前对象,该对象是DerivedClass的实例。

消息调度在运行时动态完成,因此它的行为与当时的对象无关。