gpt4 book ai didi

ios - 了解可视化快速初始化程序

转载 作者:搜寻专家 更新时间:2023-10-31 22:30:58 24 4
gpt4 key购买 nike

我无法想象 Swift 中初始化器的工作原理。对于官方文档中的这个例子。

struct Fahrenheit{
var temp : Double
init(){
temp = 32.0
}
}
var f = Fahrenheit()
print(" \(f.temp)")
//Prints 32.0

这是我目前的理解,如果我错了,请纠正我:

  1. struct 是一个值类型。
  2. 变量 temp 是一个存储属性,它将值存储在定义结构的内存空间内(在内存中)。
  3. 当我们创建变量“f”时,结构 Fahrenheit 的实例(对象)副本是在另一个具有相同属性的内存空间中创建的。

我无法理解的是什么是

init(){
temp = 32.0
}
  1. 对实例 f 做。
  2. 我们一般什么时候使用初始化器。 (主要目的:使用示例)。
  3. 还有函数、闭包和初始化器之间的区别,它们是如何存储在内存中的?

最佳答案

深入了解对象(作为类的实例或结构的实例)的创建过程绝对重要。对象是基于类或结构中定义的模板创建的,在我喜欢命名为“对象空间”的“空间”中。因此,该对象是“对象空间”中 struct Fahrenheit 的实例,您可以尝试将其视为(可视化)气球。变量 f 是对此对象的引用,它被用作访问此气球(对象、实例)的工具。我建议你看看 Apple 的文档:

https://developer.apple.com/library/prerelease/content/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html

在这里你可以看到这个:

Suggestion, how to visualize it...

而且 - 在我看来,这是一种可视化对象和对象引用的好方法。

因此,当系统执行:var f = Fahrenheit() 时,首先 - 它在对象空间中创建一个气球,它调用初始化程序(隐式或显式)来设置初始值,然后创建一个引用 (f) - 即指向刚出生的对象。

所以:

init(){
temp = 32.0
}

对-f没有影响,它在对象(气球)内部产生影响,f被用来访问气球。 (如果没有引用,ARC会杀死对象)

关于ios - 了解可视化快速初始化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39060874/

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