4

在 的文档中loadView,Apple 声明:

此方法的自定义实现不应调用 super。

所以我尝试调用[super loadView]我的loadView方法。似乎没有什么不好的事情发生,也没有任何警告。我正在使用以编程方式创建的视图loadView,而不是来自 NIB。

当我打电话时,实际上发生了什么(如果有的话)坏事[super loadView]

4

2 回答 2

5

调用[super loadView]将导致UIViewController执行loadView运行。除此之外,这是从 NIB 加载视图的方法(如果nibName已提供 a)。因此,如果您最后调用 super,它可能会覆盖您在自己的子类中所做的所有视图设置。如果你先调用 super ,这不会是一个问题......除非你有任何代码-awakeFromNib或其他东西。

基本上,您不应该调用super,因为如果您以编程方式加载视图,那么在超类中完成的所有工作都不是您想要保留的工作。充其量,您正在丢掉一堆工作。在最坏的情况下,UIViewController可能会在那里设置一些状态,对视图的来源做出假设。

你不需要它,所以不要这样做。

于 2013-02-28T22:14:01.823 回答
1

如果你允许我做这个比较,就像“不要骑红灯过马路”。

有一个红绿灯规定了不得过马路,因为无论出于何种原因,这都可能很危险。您可能会以红色过马路而没有任何反应,这是完全合理的。

API 通过声明您不应调用 super来设置 is 规则。就像上面的例子一样,结果是不确定的,取决于其他事情。没有任何事情发生是完全合理的。

于 2013-02-28T21:54:31.383 回答