在iOS和Cocoa Touch上,我们是否应该假设我们应该始终发送“超级”相同的消息?

时间:2012-06-01 07:20:44

标签: objective-c ios cocoa-touch

在iOS和Cocoa Touch中,有时似乎我们可以在不调用超级的情况下顺利通过,例如:

-(void) viewDidAppear:(BOOL)animated {
    // nothing weird if the following is not called:  
    //     [super viewDidAppear: animated]
    // but the docs says we should call it
}

我想drawRect,我们通常不会发送super相同的消息,除非super正在做一些自己的绘图。我们是否应该始终发送super相同的消息只是为了在Cocoa Touch和iOS中安全,是否有案例,然后,不是不发送super相同的消息?

2 个答案:

答案 0 :(得分:3)

没有一般规则,它总是取决于你是子类的类和你要覆盖的方法。 NSObject是(现代)Objective-C中类层次结构的根,显然它没有实现你看到和使用的大多数方法,所以总是调用super作为一般规则是没有意义的。

您只需要分别查看每种方法的文档。

答案 1 :(得分:1)

你不能一般地说这个。只有一件事是肯定的:如果你想要被覆盖的方法所具有的功能,请调用super,如果不需要,则不要调用它。