在我的UIViewController中放置有什么区别吗?

可能重复:
[super viewDidLoad]约定

在我的UIViewController的viewDidLoad中放置[super viewDidLoad]是否有所作为? 也就是说,它应该在开始(在我的代码设置UIViewController之前)或结束)在我的代码之后设置UIViewController)的方法,还是没有什么区别?

你通常应该尽早打电话给超级。 否则,超类可能会干扰你自己的实现。 比方说, UIViewController会在viewDidLoad设置一个默认的背景颜色(不会):如果你在自己的方法中设置了自己的背景颜色,然后调用super,它会被重置为可能导致混淆的默认颜色。

是的,一点没错。

 //superclass -(void)viewDidLoad { self.ivar = 4; } //subclass -(void)viewDidLoad { [super viewDidLoad]; self.ivar = 5; } //alternative subclass -(void)viewDidLoad { self.ivar = 5; [super viewDidLoad]; } 

这个例子是微不足道的,但是显示了两个从同一个超类inheritance的子类; 其中一个在载入之后将ivar设置为4,另一个将ivar设置为5。

我试着坚持上面说的idz,总是先调用[super viewDidLoad]; 在调用[super dealloc]之前,也可以在dealloc中完成所有的释放 – 也就是先去掉所有的混乱 – 否则就是泄漏时间。

你应该把它放在开头,这样你就可以覆盖它所做的任何事情(因为让我们面对它,这就是为什么你首先压倒一切)。 或者换个angular度来看,你不应该把它放在你的任何代码之后,以免它破坏你所做的任何事情。 希望这对你有意义!

该文档实际上并不表示它是必需的,并且几个苹果的示例代码项目(例如iPhoneCoreDataRecipes)根本不调用[ super viewDidLoad ] 。 将其与-viewWillAppear:的文档进行比较,明确地说:

如果您重写此方法,则必须在实现中的某个时刻调用super。

也就是说,称它为无害。 我的习惯是立即调用它,然后继续我的视图设置。