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