我究竟什么时候应该调用[super viewWillAppear:],什么时候不应该



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

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

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

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

根据文档

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

你提到的具体例子以一种更微妙的方式被打破了:他们实现了viewWillAppear而不是viewWillAppear:,所以那段代码甚至没有被执行!

简而言之:总是。

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

最新更新