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

Ios 关于不直接调用viewDidLoad的文档?,ios,cocoa-touch,uiviewcontroller,viewdidload,Ios,Cocoa Touch,Uiviewcontroller,Viewdidload,[UIViewController viewDidLoad]方法是在加载相关视图后由系统调用的(显然是?)。我有一个共同的信念,那就是不应该直接调用viewDidLoad。然而,我在中找不到这个指南,也找不到苹果的任何其他指南。它存在吗 为了进行比较,loadView显示 永远不要直接调用此方法 †重写方法中的[super viewDidLoad]除外。未明确提及,但如果您调用它,您将以某种方式违反其文档中指定的方法的“约定”: 在控制器的视图加载到内存后调用 我认为没有任何规则禁止它。我的意

[UIViewController viewDidLoad]
方法是在加载相关视图后由系统调用的(显然是?)。我有一个共同的信念,那就是不应该直接调用
viewDidLoad
。然而,我在中找不到这个指南,也找不到苹果的任何其他指南。它存在吗

为了进行比较,
loadView
显示

永远不要直接调用此方法



†重写方法中的
[super viewDidLoad]
除外。

未明确提及,但如果您调用它,您将以某种方式违反其文档中指定的方法的“约定”:

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


我认为没有任何规则禁止它。我的意思不是“有一条我们都知道的规则,只是没有写下来。”我的意思是“我认为没有任何规则禁止它。”据我所知,你可以随时调用
viewDidLoad
(包括它的
super

这并不意味着你应该叫它。但是,您几乎肯定也不应该调用
OSCompareAndSwap
。在这两种情况下,如果你有一个很好的理由并且知道你在做什么,打电话是合适的。但这不太可能出现

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


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

我认为应该理解的是,框架调用的各种“生命周期”方法永远不应该直接调用。这包括所有的
视图[Did | Will][A | Disa]出现
方法等。调用它们是为了让您知道发生了特定的事情。任何类中的任何此类方法都不应该由您自己的代码显式调用。显然我同意,但我也希望苹果公司能在某个地方明确说明这一重要细节。我建议他们可能会被迫明确警告您不要自己调用
loadView
,因为与
did
/
will
方法不同,您无法仅从方法名称合理地推断出这一点。使用各种
did
/
will
方法,意图是明确的,但在
loadView
等方法名称中(在
draw(:)
中也不明显,它们共享类似的警告)。
loadView
只是没有遵循回调方法的标准命名约定,因此文档试图消除歧义。脚注的小附录,[UIViewController viewDidLoad]的文档没有说明重写[super viewDidLoad]时需要调用它。奇怪的是,Xcode提供的模板仍然可以做到这一点:o手动调用
视图将出现
。。你到底为什么要这么做。。我写了很多容器,从来没有一次需要这样称呼。我记不起全部原因了。那是在iOS的4-5天左右,有些东西没有称之为生命周期方法。我不记得是tab视图控制器还是我们自己构建的tab视图控制器版本需要它。但是,我同意,我已经好几年没做过了。