创建对象时的ViewController类

时间:2018-07-23 23:50:17

标签: swift oop uiviewcontroller

我创建了视图控制器类,并用函数和变量填充它们,但是我没有创建这些类的对象的主体。但是,我的程序仍然有效。 因此,我的问题是何时创建这些类的实际实例?谁创造它们?

2 个答案:

答案 0 :(得分:1)

基于Apple开发人员文档:

UIViewController类定义所有视图控制器共有的共享行为。  您很少直接创建UIViewController类的实例。  相反,您可以继承UIViewController的子类,并添加管理视图控制器的视图层次结构所需的方法和属性。

https://developer.apple.com/documentation/uikit/uiviewcontroller


生命周期事件顺序

  1. init(coder:)
  2. (void)loadView
  3. (void)viewDidLoad
  4. (void)viewWillAppear
  5. (void)viewDidAppear
  6. (void)didReceiveMemoryWarning
  7. (void)viewWillDisappear
  8. (void)viewDidDisappear

这是ViewController可用的时间

  • init(编码器:)

Storyboard中创建应用程序的视图时,init(coder:)是用来实例化视图控制器并使之生效的方法。在视图控制器的初始阶段,通常会分配视图控制器在其生命周期内将需要的资源。通过这种方法,您可以实例化依赖项,包括将以编程方式添加到视图的子视图。并注意,init(coder:)在对象生命周期中被称为only once,就像所有init方法一样。

init(coder :)类似于c ++或其他具有在存储器中创建对象的主要功能的编程语言

但是在Swift中,您无需调用此方法,因为AppDelegate已经为您完成了此操作;)

enter image description here

答案 1 :(得分:0)

创建快速项目时,您会在此VC的布局所在的 Main.storyboard 中获得一个ViewController:UIViewController,其中有一个入口点(VC中间的箭头)将其设置为窗口的rootViewController,如果要覆盖它,则在AppDelegate.swift集之前在didFinishLaunchingWithOptions的{​​{1}}中

return true