我什么时候应该调用[super viewWillAppear:]而什么时候不调用?

时间:2013-09-28 07:18:34

标签: ios objective-c cocoa-touch uiviewcontroller viewwillappear

我一直认为调用[super viewWillAppear:animated]是强制性的。但是今天我从Apple的示例应用程序CoreDataBooksviewWillAppear:实现了a piece of code来看到{{3}}:

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

注意没有超级电话。这让我很困惑。如果连Apple的代码都没有包含对[super viewWillAppear:]的调用,那么也许我可以省略它?或者也许有关于这个问题的某些规则?任何人都可以解释一下吗?

2 个答案:

答案 0 :(得分:14)

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

根据documentation

  

如果您覆盖此方法,则必须在您的实施中的某个时刻调用super。

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

答案 1 :(得分:5)

简而言之:永远。

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