viewDidLoad和viewDidAppear之间的区别

时间:2012-06-29 00:28:37

标签: ios

viewDidLoadviewDidAppear之间有什么区别?什么样的初始化或自定义代码进入这些功能?

e.g。 presentModalViewController只有在viewDidAppear而不是viewDidLoad时才有效。

2 个答案:

答案 0 :(得分:135)

当视图控制器首次加载到内存中时,

viewDidLoad只调用一次。这是您希望实例化任何实例变量并构建在此视图控制器的整个生命周期中存在的任何视图的位置。但是,此时通常尚未看到该视图。

当视图实际可见时调用

viewDidAppear,并且可以在视图控制器的生命周期中多次调用(例如,当模式视图控制器被关闭并且视图再次可见时)。您可以在此处执行任何布局操作或在UI中执行任何绘图 - 例如,呈现模态视图控制器。但是,你在这里做的任何事都应该是可重复的。最好不要在这里保留内容,否则如果在视图消失时不释放内存,就会出现内存泄漏。

请参阅:https://developer.apple.com/documentation/uikit/uiviewcontroller

答案 1 :(得分:20)

简单地说,您可能希望在viewDidLoad中创建任何控件或数组,其中viewDidAppear是您想要刷新这些控件或数组的位置。

创建控制器时会调用 viewDidLoad 一次,每次出现视图时都会调用 viewDidAppear 。因此,假设您有一个模态视图,当该视图被取消时,将调用 viewDidAppear ,并且不会调用 viewDidLoad