调用有什么副作用

loadView的文档中,Apple声明:

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

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

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

调用[super loadView]将导致[super loadView]UIViewController实现运行。 除此之外,如果提供了nibName ,这是从NIB加载视图的方法。 因此,如果您要调用super last,它可能会覆盖您在自己的子类中执行的所有视图设置。 如果你先调用super,这不会有问题……除非你在-awakeFromNib有任何代码。

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

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

如果你允许我进行这种比较,就像“不要穿过红色的街道”。

有一个交通信号灯规定不要过马路,因为无论原因如何都可能是危险的。 你可能穿过红色而没有任何反应是完全合理的。

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