关于不直接调用 viewDidLoad 的文档?



[UIViewController viewDidLoad]方法在加载关联的视图后由系统调用(显然?一个普遍的看法 - 我同意 - 是viewDidLoad不应该直接被称为†。但是,我在文档中找不到此指南,也无法找到Apple的其他任何内容。它存在吗?

为了进行比较,loadView文档说

切勿直接调用此方法。


† 覆盖方法中的[super viewDidLoad]除外。

我认为没有任何规则禁止它。我的意思不是"有一条我们都知道的规则,只是没有写下来。我的意思是"我认为没有任何规则禁止它。据我所知,您可以在适当的时候(包括其super)自由地打电话给viewDidLoad

这并不意味着你应该称呼它。但是,几乎可以肯定的是,您也不应该打电话给OSCompareAndSwap。在这两种情况下,如果您有充分的理由并且知道自己在做什么,那么打电话可能是合适的。但它不太可能出现。

虽然我想不出什么时候必须直接调用viewDidLoad,但我不得不手动调用viewWillAppearviewDidDisappear来管理自定义容器视图控制器中的视图生命周期。没有什么可以禁止调用视图生命周期方法,如果这是你的意思。

也就是说,如果您不是说"视图已转换为此状态",那么调用视图生命周期方法将是一种不好的做法。而且由于很难进入已加载视图但不会调用viewDidLoad的情况,因此很难想象在很多情况下它会很有用。而且你不应该无用地调用一个方法。所以据我所知,这是这里唯一的规则。

它没有明确提及,但如果你调用它,你会以某种方式违反其文档中指定的方法的"合约":

在控制器的视图加载到内存中后调用。

最新更新