关于开发到底使用ValueType 值类型还是Reference Type 引用类型,关于这个,Swift:什么时候使用结构体和类这个文章写得比较好 这里我就不再多说了 我只带大家深入了解一下。
大家都知道值类型在赋值的时候做的是值复制的过程,引用类型赋值做的是引用复制,但实例不复制。
但是有没有想过嵌套类型呢?比如以下4种(只讨论一层嵌套最后会做总结)
-
引用类型嵌套引用类型
-
值类型嵌套值类型
-
引用类型嵌套值类型
-
值类型嵌套引用类型
-
引用类型嵌套引用类型
代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
classInner{
var
value=99
}
classOutter{
value=99
inner=Inner()
}
out1=Outter()
out2=out1
out1.value=100
out1.inner.value=100
print(
"outer2.value=\(out2.value)outer2.inner.value=\(out2.inner.value)"
)
|
结果为
"outer2.value=100 outer2.inner.value=100\n"
画图分析
Paste_Image.png
结论:
如果你有一个引用类型嵌套了另外一个引用类型,没有什么特别的事会发生。像通常那样,任何一个指向内部或者外部值的指针都能操纵他指向的对象。只要其中一个引用操纵值使其改变,其他引用指向的值也就跟着变了。
-
值类型嵌套值类型
structInner{
value=99
}
structOutter{
inner=Inner()
value=99
}
|
情况1 只复制外部值
out1=Outter()
out2=out1
out1.value=100
out1.inner.value=100
结果:
|