gpt4 book ai didi

swift - nil 在可选类型中,它背后到底是什么?它在内存中是什么样子的?

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:32 26 4
gpt4 key购买 nike

class Person{
let name: String
init(name: String) {
self.name = name
}
}

var john: Person?

上面的代码片段定义了一个名为john 的可选类型的变量。此时,变量的初始值为nil

类实例将其值保存在堆空间中,并将引用存储在堆栈中。 (如果我错了请纠正我)john 在这种情况下是一个未分配的可选变量,它还没有引用任何实例。

问题:PC 将名称字符串“john”存储在哪里?它是否已被创建并存储在堆栈 中并等待引用 中的某个实例? “nil”值存储在哪里?

非常感谢

最佳答案

有了这个

var john: Person?

内存槽被添加到堆栈之上。

这个插槽的类型是 Optional 类型 Person 的值

Optional<Person>

在这个内存位置中,我们找到了 Optional.none 值。

之后

john = Person(name: "Mr Robot")

一些内存被分配到中。

然后根据 Person initializer 的逻辑写入此内存。

然后让我们回到堆栈。这里 Optional.none 被替换为值 Optional.some 并且 Person 对象的地址内存被写在一个特殊的字段中枚举值。

关于swift - nil 在可选类型中,它背后到底是什么?它在内存中是什么样子的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38356244/

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