调用[superloadview]的副作用是什么?



loadView的文档中,Apple声明:

这个方法的自定义实现不应该调用super。

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

当我调用[super loadView]时,会发生什么(如果有的话)不好的事情?

调用[super loadView]将导致loadViewUIViewController实现运行。除此之外,如果提供了nibName,这个方法将从NIB加载视图。如果你调用super last,它可能会覆盖你在自己子类中做的所有视图设置。如果你先打超级电话,就不会有问题了……除非你有-awakeFromNib之类的代码

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

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

如果你允许我这样比较,这就像"红灯不要过马路"。

有一个红绿灯,它建立了一个规则过马路,因为无论什么原因都可能危险。

你可能在红灯时过马路而什么也没发生,这是完全合理的。API通过声明你应该而不是调用super来设置is规则。就像上面的例子一样,结果是不确定的,取决于其他事情。什么也没发生是完全合理的。

相关内容

  • 没有找到相关文章

最新更新