iOS View Controller生命周期生命周期
iOS具有视图控制器,可帮助您控制视图。 视图基本上是屏幕,仅此而已。 像android活动一样,iOS View Controller也具有生命周期,我们需要了解它们,以便充分利用android。
- 初始化(编码器:)
从情节提要中创建视图时将调用此方法。 这用于为视图分配资源,该资源将在视图的生命周期中使用。 - 初始化(nibName:bundle 🙂
从nib文件而不是情节提要中创建视图时,将调用此方法。 它执行与情节提要的init方法相同的任务。 我们提供了nib文件,可避免在与大团队合作时在主故事板内部发生冲突,并且nib有助于将主故事板划分为较小的UI元素。 - loadView()
这是为视图控制器创建视图的方法。 仅当您要使用代码构建视图控制器的整个接口时,才重写此方法。 如果要使用情节提要或nib文件创建界面,则不需要这样做。 - viewDidLoad()
该方法在视图控制器的生命周期中被调用一次。 因此,它用于发生一次的事情。 用户也可以使用此方法在视图中加载视图中的数据。 但是请记住,如果要进行网络调用并在每次视图加载时加载数据,请使用viewDidAppear(_ :)。 请记住,在此生命周期步骤中,视图范围不是最终的。 - viewWillAppear(_ 🙂
对于每次在视图控制器出现在屏幕上时都需要重复执行的任务,将覆盖此方法。 对于视图控制器的相同实例,可以多次调用此方法。 当与视图关联的数据更改时,将使用它。 在此步骤中,视图已定义边界,但未应用方向 - viewWillLayoutSubViews:
调用此方法以通知视图控制器其视图将要布局其子视图。 如果您没有使用自动调整大小的蒙版或约束,并且视图大小发生更改,则可能要在此处更新子视图。 - viewDidLayoutSubviews:
调用此方法以通知视图控制器其视图刚刚布置了其子视图。 它可以用于在子布局后对视图进行其他更改。 - viewDidAppear(_ 🙂
视图控制器出现在屏幕上后,将调用此方法。 您可以使用它在用户界面中启动动画,开始播放视频或声音,或开始从网络收集数据。 - viewWillDisappear(_ 🙂
在过渡到下一个视图控制器之前,将调用此方法,并且从屏幕上删除了原始视图控制器。 您几乎不需要重写此方法,因为此时几乎不需要执行一些常见任务,但是您可能需要它。 - viewDidDisappear(_ 🙂
从屏幕上删除视图控制器后,将调用此方法。 通常,您可以重写此方法以停止视图控制器不在屏幕上时不应运行的任务。 例如,您可以停止收听通知。 - deinit()
在从内存中删除视图控制器对象之前,将调用此方法。 通常,您可以重写deinit()来清理视图控制器已分配的资源,这些资源不会被自动引用计数( ARC )释放。 离开屏幕的视图控制器并不意味着之后将被释放。 许多容器将视图控制器保存在内存中。 例如,当您深入导航控制器时,所有以前的视图控制器都将保留在内存中。 - didReceiveMemoryWarning()
iOS设备的内存和电量有限。 当内存开始填满时,iOS不会像计算机一样使用其有限的硬盘空间将数据移出内存。 因此,您有责任将应用程序的内存占用保持在较低水平。 如果您的应用开始使用过多的内存,iOS会通知它。 由于视图控制器执行资源管理,因此这些通知通过此方法传递给它们。 这样,您可以采取措施释放一些内存。 请记住,如果您忽略内存警告,并且应用程序使用的内存超过特定阈值,iOS将会终止您的应用程序。 对用户来说这看起来像是崩溃,应该避免。
感谢您阅读博客。 关注我以获取更多更新。