viewDidLoad
和之间有什么区别viewDidAppear
?这些函数采用哪种初始化或自定义代码?
例如presentModalViewController
仅当存在viewDidAppear
而不存在时起作用viewDidLoad
。
Answers:
viewDidLoad
第一次将视图控制器加载到内存中时,仅调用一次。在这里您要实例化任何实例变量并构建在该视图控制器的整个生命周期中都有效的任何视图。但是,此刻该视图通常不可见。
viewDidAppear
在视图实际可见时调用,并且可以在视图控制器的生命周期中多次调用(例如,当关闭模态视图控制器并且视图再次变得可见时)。在这里您要执行任何布局操作或在UI中进行任何绘图-例如,显示一个模式视图控制器。但是,您在这里所做的任何事情都应该是可重复的。最好不要在此处保留所有内容,否则,如果在视图消失时不释放它们,则会导致内存泄漏。
请参阅:https://developer.apple.com/documentation/uikit/uiviewcontroller
viewDidLoad
通常只被调用一次并且只能被调用一次,但是在一种情况下,可以再次调用它。具体来说,如果您收到,则didReceiveMemoryWarning
可能会释放不可见的视图(尽管视图控制器未被触摸),并且当您返回时,viewDidLoad
可能会再次调用它们。
didReceiveMemoryWarning
。但是我同意,如果您在编写自己的文章时采用好的做法viewDidLoad
,那应该没问题。我唯一的观点是,草率使用ivars和手动内存管理肯定会导致泄漏viewDidLoad
。人们应该对didReceiveMemoryWarning
场景敏感并进行相应的编程。
简而言之,您想在中创建任何控件或数组viewDidLoad
,就像在viewDidAppear
其中刷新这些控件或数组一样。
viewDidLoad
在创建控制器时调用一次,并viewDidAppear
在每次视图时调用一次,好吧,DID出现。假设您有一个模态视图,当该视图被关闭时,viewDidAppear
将被调用,并且viewDidLoad
不会被调用。
viewDidLoad
可能被多次调用。如果在内存不足的情况下,较早版本的iOS卸载了未显示的视图(位于其他视图堆栈中),则视图控制器将在需要重新显示在屏幕上时自动重新加载视图。在更高版本的iOS中,您可以选择通过执行较早的iOS为您执行的操作来帮助减少内存使用:在didReceiveMemoryWarning
消息到达时卸载屏幕外视图,在这种情况下viewDidLoad
将再次调用。