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

什么是正确的,将所有代码放在超级调用之前或之后?它的工作方式是双向的,但我不知道是等到电话结束还是在开始时提交更好?

干杯

4

4 回答 4

9

一般的经验法则是在设置时首先调用它(如这里),并在拆除时最后调用它。

于 2011-01-20T17:38:16.703 回答
3

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

于 2011-01-20T17:37:42.120 回答
1

这取决于具体情况,真的:

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

  • 通常,您可能非常需要在超级调用之前和之后添加行为,甚至完全忽略超级调用(毕竟,这就是方法覆盖的用途)。

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

于 2011-01-20T17:47:56.097 回答
0

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

例如,在对象销毁的上下文中,您最后调用 super。

- (void)dealloc {
[someObj release];

[super dealloc];

}

于 2011-01-20T17:44:08.250 回答