iOS View Controller生命周期

介绍:

对于iOS应用开发,最重要的是了解应用生命周期并查看生命周期

通常,有三种方法可以在iOS中制作View Controller。

  1. 从.xib
  2. 从代码
  3. 通过情节提要

这是在生命周期视图中处于活动状态的所有方法:

loadView

当视图控制器从代码创建时使用此方法。最好不要对由.xib或情节提要制成的此方法id视图控制器执行任何操作。

在视图加载中做什么:视图控制器在 请求 view属性但当前为 nil 时调用此方法 此方法加载或创建视图,并将其分配给 view 属性。在此方法中,viewController以编程方式创建。

viewDidLoad:

此方法在视图控制器生命周期中加载一次。在加载所有视图时调用此方法。在此方法中,它的优点是:

1.需要Onece的网络通话。

2.用户界面

3,其他需要一次完成的任务

注意:在此方法中,在定义边界和发生旋转之前为Call调用,因此在此方法中使用大小有风险。

viewWillAppear:

每次在视图可见之前和配置任何动画之前都会调用此方法。在此方法中,视图已绑定但尚未设置方向。您可以重写此方法以执行与显示视图相关的自定义任务,例如隐藏字段或在视图变为可见之前禁用操作。

viewWillLayoutSubviews:

默认情况下,它什么都不做。 当视图的边界改变时,该视图将调整其子视图的位置。 视图控制器可以重写此方法以在视图布置其子视图之前进行更改。

viewDidLayoutSubviews:

在更改其边界后,将viewController调整为其子视图之后,将调用此方法。如果要在设置子视图后对其进行更改,请在此处添加代码。

viewDidAppear:

在屏幕上显示视图之后调用此方法。 通常将数据保存到核心数据或开始动画或开始播放视频或声音,或开始从网络收集数据。这种任务类型适用于此方法。

viewWillDisappear:

从视图层次结构中删除视图之前调用的此方法。视图仍在视图层次结构上但尚未删除。 尚未配置任何卸载动画。 在此处添加代码以处理计时器,隐藏键盘,取消网络请求,将所有更改还原到父UI。 另外,这也是保存状态的理想位置。

viewDidDisappear:

从视图层次结构中删除VC的视图后,将调用此方法。 使用此方法停止侦听通知或设备传感器。

取消初始化:

在将视图控制器从内存中删除之前,它会被初始化。 通常,您可以重写deinit()来清除视图控制器已分配的资源,但这些资源不会被ARC释放。 请记住,仅因为不再可见VC,并不意味着它已被释放。 容器视图控制器(例如NavigationController)可以将其VC保留在内存中。 请记住,即使VC位于屏幕外,如果它仍在内存中,它仍然可以正常工作并可以接收通知。

didReceiveMemoryWarning()

当内存开始填满时,iOS不会自动将数据从内存移动到其有限的硬盘空间。 但是,它确实会发出此警告,并且您(我是说您)负责清除内存中的某些对象。 请注意,如果您的应用程序内存超过某个阈值,iOS将关闭您的应用程序。 不幸的是,这对于最终用户来说就像是崩溃。

viewWillTransition(to:with 🙂

当界面方向更改时,UIKit将在窗口的根视图控制器上调用此方法,然后再进行大小更改。 然后,根视图控制器通知其子视图控制器,从而在整个视图控制器层次结构中传播消息。 的参数包含容器视图的新CGSize大小,而的参数包含UIViewControllerTransitionCoordinator协调器,该枚举器描述了新的方向。