swift – nil是一个可选类型,究竟背后是什么?在记忆中它看起来像什么?

swift – nil是一个可选类型,究竟背后是什么?在记忆中它看起来像什么?,第1张

概述class Person{ let name: String init(name: String) { self.name = name }}var john: Person? 上面的代码片段定义了一个名为john的可选类型的变量.此时,变量的初始值为nil. 类实例将其值保存在堆空间中,并将引用存储在堆栈中. (纠正我,如果我错了)john在这种情况
class Person{    let name: String    init(name: String) {        self.name = name    }}var john: Person?

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

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

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

非常感谢

解决方法 有了这个

var john: Person?

堆栈顶部添加了一个内存插槽.

此插槽的类型是Person类型的可选值

Optional<Person>

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

在这之后

john = Person(name: "Mr Robot")

一些内存被分配到堆中.

然后按照Person初始化程序的逻辑写入该内存.

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

总结

以上是内存溢出为你收集整理的swift – nil是一个可选类型,究竟背后是什么?在记忆中它看起来像什么?全部内容,希望文章能够帮你解决swift – nil是一个可选类型,究竟背后是什么?在记忆中它看起来像什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1005171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存