swift – nil是一个可选类型,究竟背后是什么?在记忆中它看起来
发布时间:2020-12-14 04:37:38 所属栏目:百科 来源:网络整理
导读: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对象的地址内存写在枚举值的特殊字段内. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |