Obj-C:打电话给超级

时间:2011-01-20 17:33:27

标签: iphone objective-c oop super

- (void)viewDidAppear:(BOOL)animated {
    <CODE BEFORE>
    [super viewDidAppear:animated];
    <CODE AFTER>
}

什么是正确的,在超级电话之前或之后放置所有代码? 它的工作方式是双向的,但我不知道最好是等到最后还是在最后提交它?

欢呼endo

4 个答案:

答案 0 :(得分:9)

一般的经验法则是在设置时(比如这里)先调用它,然后在撕掉时将其调用。

答案 1 :(得分:3)

一般情况下,您的代码应该在调用super之后。一个明显的例外是dealloc,在这种情况下,你想在自己清理后调用[super dealloc]

答案 2 :(得分:1)

具体取决于具体情况:

  • 显然,对于初始化/清理,由于子类依赖于它的超类状态,所以它应该在之前初始化并清理之前。

  • 一般情况下,您可能需要在超级呼叫之前和之后添加行为,或者甚至完全省略超级呼叫(毕竟这是什么方法覆盖)。

在这个确切的情况下,请参阅其他答案;但由于viewDidAppear:是类似通知的方法,它实际上取决于您的代码是需要一个完全初始化的对象,还是参与初始化本身,因此只有在完成后才能进行超级调用。

答案 3 :(得分:0)

这取决于你在做什么。你能提供一些关于你正在使用的对象的背景吗?

例如,在对象销毁的上下文中,您可以调用super last。

- (void)dealloc {
[someObj release];

[super dealloc];

}