gpt4 book ai didi

swift - 变量如何成为类的类型?

转载 作者:行者123 更新时间:2023-11-28 13:26:00 39 4
gpt4 key购买 nike

我目前正在学习委托(delegate)是如何工作的,但是我不明白为什么一个变量被初始化为类的一种类型,而不是被实例化。一个变量如何成为类的一种类型,当您可以实例化该类时,为什么有必要这样做?

变种人:人!

最佳答案

How can a variable be a type of a class and why is that necessary when you could just instantiate the class?

您显然可以只创建该类的一个实例:

var person = Person(...)   // Note, class names generally begin with uppercase letter

但考虑以下几点:

var person: Person!

这意味着 person 现在是一个 Optional,可以引用 Person 实例。 ! 表示当您在代码中引用它时,该可选值将被隐式解包。

所以问题是为什么要使用后者(尚未设置的隐式解包引用)而不是前者(只是立即实例化 Person)。答案是,当 person 变量最初无法设置但稍后会设置时,您通常会这样做。

一个常见的例子是“details” View Controller ,它将向我们展示有关从先前 View Controller 中选择的 Person 对象的详细信息。如果这个细节 View Controller 是从一个 Storyboard场景实例化的,显然 person 变量还没有设置,所以它必须是一个可选的。但是呈现 View Controller (或协调器或其他)将在场景的 View Controller 首次实例化之后,但在 View Controller 出现在屏幕上之前设置 person 引用。例如,我们可以在呈现 View Controller 的 prepare(for:sender:) 方法中设置目的地的 person

因此,在这种情况下,我们会将 person 声明为 Optional(因此可以实例化 View Controller ,即使尚未设置 person ),但将其声明为隐式展开的 (Person!),因为我们知道演示者将确保在详细信息 View Controller 出现在屏幕上之前设置 person

关于swift - 变量如何成为类的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58360704/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com