在 的文档中loadView
,Apple 声明:
此方法的自定义实现不应调用 super。
所以我尝试调用[super loadView]
我的loadView
方法。似乎没有什么不好的事情发生,也没有任何警告。我正在使用以编程方式创建的视图loadView
,而不是来自 NIB。
当我打电话时,实际上发生了什么(如果有的话)坏事[super loadView]
?
在 的文档中loadView
,Apple 声明:
此方法的自定义实现不应调用 super。
所以我尝试调用[super loadView]
我的loadView
方法。似乎没有什么不好的事情发生,也没有任何警告。我正在使用以编程方式创建的视图loadView
,而不是来自 NIB。
当我打电话时,实际上发生了什么(如果有的话)坏事[super loadView]
?
调用[super loadView]
将导致UIViewController
执行loadView
运行。除此之外,这是从 NIB 加载视图的方法(如果nibName
已提供 a)。因此,如果您最后调用 super,它可能会覆盖您在自己的子类中所做的所有视图设置。如果你先调用 super ,这不会是一个问题......除非你有任何代码-awakeFromNib
或其他东西。
基本上,您不应该调用super
,因为如果您以编程方式加载视图,那么在超类中完成的所有工作都不是您想要保留的工作。充其量,您正在丢掉一堆工作。在最坏的情况下,UIViewController
可能会在那里设置一些状态,对视图的来源做出假设。
你不需要它,所以不要这样做。
如果你允许我做这个比较,就像“不要骑红灯过马路”。
有一个红绿灯规定了不得过马路,因为无论出于何种原因,这都可能很危险。您可能会以红色过马路而没有任何反应,这是完全合理的。
API 通过声明您不应调用 super来设置 is 规则。就像上面的例子一样,结果是不确定的,取决于其他事情。没有任何事情发生是完全合理的。