Child类调用父类的方法

时间:2011-05-29 18:20:22

标签: objective-c methods parent-child class-hierarchy alloc

在objective-C中,我希望进行子类调用或调用父类的方法。因为在父级中已经分配了子级,并且子级执行了调用父方法的操作。像这样:

//in the parent class
childObject *newChild = [[childClass alloc] init];
[newChild doStuff];

//in the child class
-(void)doStuff {
    if (something happened) {
        [parent respond];
    }
}

我怎么能这样做? (如果你能彻底解释我会很感激)

2 个答案:

答案 0 :(得分:7)

您可以使用委托:让childClass定义委托协议和符合该协议的委托属性。然后你的例子会变成这样的东西:

// in the parent class
childObject *newChild = [[childClass alloc] init];
newChild.delegate = self;
[newChild doStuff];

// in the child class
-(void)doStuff {
    if (something happened) {
        [self.delegate respond];
    }
}

这里有一个如何声明和使用委托协议的示例:How do I set up a simple delegate to communicate between two view controllers?

答案 1 :(得分:3)

没有太多要解释的内容。

在这种情况下使用时,您会使用关键字super,这与self非常相似,不同之处在于它指的是self已成为其自身成员的内容直接超类:

// in the child class
- (void)doStuff {
  if (something happened) {
    [super respond];
  }
}