数组在赋值或参数传递过程中会发生复制行为。数组属于值类型,值类型在赋值或参数传递时会发生复制行为,赋予的值或传递的参数是一个副本,而引用类型在赋值或参数传递时不会发生复制行为,赋予的值或传递的参数是一个引用。下面我们通过一个例子来介绍数组的复制。
1 | var languageList: [String] = ["Swift","OC","Java","C"]
2 | var copyList = languageList
3 | languageList[0] = "iOS"
4 | print("原来的值:\(languageList[0])")
5 | print("拷贝的值:\(copyList[0])")
输出结果:原来的值:iOS
拷贝的值:Swift
上述代码,第1行我们定义了languageList数组。第2行将数组languageList复制给copyList。第3行将languageList数组的第一个元素的值改为“iOS”,第4行和第5行打印出languageList数组第一个值以及复制的数组copyList第一个元素的值。由运行结果我们可以看出,虽然languageList数组第一个值发生改变,但copyList第一个元素的值却没有发生变化。这是因为数组值引类型,复制之后不会改变值,原来的数组改变,拷贝过来的数组不会改变。同样复制后数组值改变也不会影响原来数组的值。