我创建了视图控制器类,并用函数和变量填充它们,但是我没有创建这些类的对象的主体。但是,我的程序仍然有效。 因此,我的问题是何时创建这些类的实际实例?谁创造它们?
答案 0 :(得分:1)
基于Apple开发人员文档:
UIViewController类定义所有视图控制器共有的共享行为。 您很少直接创建UIViewController类的实例。 相反,您可以继承UIViewController的子类,并添加管理视图控制器的视图层次结构所需的方法和属性。
https://developer.apple.com/documentation/uikit/uiviewcontroller
init(coder:)
这是ViewController可用的时间
在Storyboard
中创建应用程序的视图时,init(coder:)
是用来实例化视图控制器并使之生效的方法。在视图控制器的初始阶段,通常会分配视图控制器在其生命周期内将需要的资源。通过这种方法,您可以实例化依赖项,包括将以编程方式添加到视图的子视图。并注意,init(coder:)
在对象生命周期中被称为only once
,就像所有init方法一样。
init(coder :)类似于c ++或其他具有在存储器中创建对象的主要功能的编程语言
但是在Swift
中,您无需调用此方法,因为AppDelegate
已经为您完成了此操作;)
答案 1 :(得分:0)
创建快速项目时,您会在此VC的布局所在的 Main.storyboard 中获得一个ViewController:UIViewController
,其中有一个入口点(VC中间的箭头)将其设置为窗口的rootViewController,如果要覆盖它,则在AppDelegate.swift
集之前在didFinishLaunchingWithOptions
的{{1}}中
return true