swift - 创建对象时的 ViewController 类
问题描述
我创建视图控制器类并用函数和变量填充它们,但我没有创建这些类的对象的主要内容。但是,我的程序仍然有效。所以,我的问题是这些类的实际实例是什么时候创建的?谁创造了它们?
解决方案
基于 Apple 开发者文档:
UIViewController 类定义了所有视图控制器共有的共享行为。您很少直接创建 UIViewController 类的实例。相反,您将 UIViewController 子类化并添加管理视图控制器的视图层次结构所需的方法和属性。
https://developer.apple.com/documentation/uikit/uiviewcontroller
生命周期事件顺序
init(coder:)
- (void)loadView
- (void)viewDidLoad
- (void)viewWillAppear
- (void)viewDidAppear
- (void)didReceiveMemoryWarning
- (void)viewWillDisappear
- (void)viewDidDisappear
这是 ViewController 可用的时间
- 初始化(编码器:)
在 中创建应用程序的视图时Storyboard
,init(coder:)
会调用该方法来实例化视图控制器并将其变为现实。在视图控制器的初始阶段,您通常会分配视图控制器在其生命周期内所需的资源。在这种方法中,您可以实例化依赖项,包括您将以编程方式添加到视图中的子视图。并注意在对象的生命周期中调用它,就像所有的 init 方法一样init(coder:)
。only once
init(coder:) 就像 c++ 或其他具有在内存中创建对象的主要功能的编程语言
但是Swift
你不需要调用这个方法,因为AppDelegate
已经为你做了这个;)
推荐阅读
- sql - Oracle PL/SQL:如何使用可变数组作为输出参数执行过程?
- wordpress - Wordpress Contact Form 7 插件的问题 - 动态文本扩展
- powershell - 测试路径 - 文件名的变量部分 - 变量没有被替换
- java - 如何从属性中获取枚举值
- java - 在java中合并json文件
- r - 将嵌套求和转换为 R 型矩阵乘法
- apache-nifi - 如何在 Nifi 中实现等价的 Aggregator EIP
- ios - 如何在 iOS 本机应用程序和 Safari 浏览器之间强制执行 Azure AD SSO?
- java - 为什么 Spring Data JPA 文档描述了仅以 find 开头的查询方法?
- c# - c#将记录添加到选定的客户