没有直接调用viewDidLoad的文档?

时间:2018-01-07 18:49:04

标签: ios cocoa-touch uiviewcontroller viewdidload

加载相关视图后,系统会调用[UIViewController viewDidLoad]方法(显然)。一个共同的信念 - 我分享 - 是viewDidLoad不应该直接调用†。但是,我无法在documentation中找到此指南,也无法在Apple中找到其他任何内容。它存在吗?

为了进行比较,loadView documentation表示

  

你永远不应该直接调用这个方法。

†在重写方法中取消[super viewDidLoad]

2 个答案:

答案 0 :(得分:2)

我认为没有任何禁止它的规则。我并不是说“我们都知道有一条规则,它只是没有写下来。”我的意思是“我认为没有任何禁止它的规则。”我们知道,您可以随时致电viewDidLoad(包括其super)。

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

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

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

答案 1 :(得分:1)

没有明确提及,但如果你打电话给它,你会以某种方式违反合同"文档中指定的方法:

  

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