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