[super viewWillAppear]做什么,什么时候需要?

Yaz*_*zmi 28 iphone cocoa-touch objective-c

-(void)viewWillAppear:(BOOL)animated{
//something here
[super viewWillAppear];
}
Run Code Online (Sandbox Code Playgroud)

是否[super viewWillAppear];总是需要?如果不是何时以及为何使用它?

Fel*_*xyz 51

首先,正确的锅炉板应该是:

-(void)viewWillAppear:(BOOL)animated{
   [super viewWillAppear:animated];
   //something here
}
Run Code Online (Sandbox Code Playgroud)

换句话说,super 打电话,然后自己做.你必须将animated参数传递给super.

您通常希望在任何方法中首先调用超类的实现.在许多语言中都是必需的.在Objective-C中它不是,但如果你不把它放在方法的顶部,你很容易遇到麻烦.(也就是说,我有时会打破这种模式.)

是否需要调用super's实现?在这种特殊方法的情况下,如果不调用它,可能会出现意外行为(特别是如果你有子类的话).所以答案绝不是技术意义上的,但你应该总是这样做.UINavigationController

但是,在许多其他方法中,可能有充分的理由不打电话super.

  • 是的,Felixyz,但这是一个简单的规则:让超级建造第一,让超级撕裂最后. (21认同)
  • 这是一个反例:当重写dealloc时,你必须在完成所有自己的释放后调用super,否则你几乎肯定会崩溃.所以我想事实是,正确的调用顺序取决于上下文,这不是理想的. (4认同)
  • 我在这里看到了问题.人们不知道为什么他们称之为超级视野,他们只是认为既然书上说这样做,我们就应该这样做.首先,你必须知道谁是你的超级,以及在你去调用它之前它是什么实现了viewwillappear. (2认同)

gbk*_*gbk 8

调用super方法提供了在父类中执行代码的可能性.

关于你的问题,根据Apple doc

在此输入图像描述

所以,是的,这种方法是必需的.