![]() |
1
10
创建另一个 实例 . 这是另一个 变量
下一步:
这并不能改变一个事实 对象 它改变了一个世界 . 每个赋值都复制一个值—除了其中一个还执行装箱操作。让我们稍微简化一下:
两者 变量
这改变了世界
的价值
现在,让我们回到之前的场景,看看为什么会有所不同。在那里,你有:
这并没有改变
让我们用一个真实世界的类比来简化这个过程。假设我们所有的变量都是写有住址的纸片。变化
现在想想你的
|
![]() |
2
3
区别在于封装对象
在第一种情况下,您有一个包含引用的对象。当你说你创建了一个
在第二种情况下,您也有两个引用两个相同的对象,但在这种情况下,您直接引用装箱对象,而不是容器。将新值指定给其中一个引用时,会得到两个单独的对象。一个对象是装箱1,另一个对象是装箱2。将新值赋给b时,它不会将值放在它所指向的框中,而是创建一个包含新值的新框对象。
|
![]() |
3
2
第一个例子是:
这里只有一个容器实例。两个变量都有对此容器的引用。当你改变容器时,两个变量都会看到变化。
现在你重新分配
|
![]() |
4
0
在你的第二种情况下,你正在做一些完全不同的事情。当你这么做的时候:
你实际上创建了一个全新的对象。int的值类型被转换为一个对象,因此创建了一个新的引用对象。此时,“d”变量不再引用与“c”变量相同的对象。 |
![]() |
John Henckel · 如何在Swift中存储对整数的引用 9 年前 |