9

我一直认为打电话[super viewWillAppear:animated]是强制性的。但是今天我从 Apple 的示例应用程序中发现了一段代码CoreDataBooks,这里是viewWillAppear:从那里开始的实现:

- (void)viewWillAppear
{
   [self.tableView reloadData];
}

请注意,没有对 super 的调用。这让我很困惑。如果连 Apple 的代码都不包含调用,[super viewWillAppear:]那么也许我总是可以省略它?或者也许对这件事有一定的规定?谁能解释一下?

4

2 回答 2

14

尽管super有时不调用实现可能是无害的,但您应该始终调用[super viewWillAppear:],无论 Apple 发布的坏示例如何。不这样做可能会导致追查非常讨厌的问题。

根据文档

如果你重写了这个方法,你必须在你的实现中调用 super 。

您提到的具体示例以更微妙的方式被破坏:它们实现viewWillAppear而不是viewWillAppear:,因此该段代码甚至没有被执行!

于 2013-09-28T07:25:03.390 回答
5

简而言之:总是。

如果您不这样做,可能会导致难以追踪的问题

于 2013-09-28T07:28:36.737 回答