/**
集合类的拷贝操作
*/
var array: Array<Int> = [1,2,3]
var array1 = array
/**
public struct Array<Element>
我们点击安住Command 点击String可以看到是 结构体类型,值类型
值类型的赋值操作是深拷贝,
*/
array1 += [4,5,6]
print("array==\(array)")
print("array1==\(array1)")
/**
array==[1,2,3]
array1==[1,3,4,5,6]
我们可以看到改变array1后,array并没有被改变啊。
所以上面是深拷贝。
*/
var dict: Dictionary<Int,String> = [1 : "a",2 : "b"]
var dict1 = dict
/**
public struct Dictionary<Key : Hashable,Value> : Collection
我们点击安住Command 点击Dictionary可以看到是 结构体类型,值类型
*/
print("------------------------>")
dict1[3] = "c"
print("dict1==\(dict1)")
print("dict==\(dict)")
/**
dict1==[2: "b",3: "c",1: "a"]
dict==[2: "b",0)"> 我们可以看到改变dict1后,dict并没有被改变啊。
*/
print("------------------------>")
var ocArray: NSMutableArray = NSMutableArray.init(array: [1,3])
/**
open class NSMutableArray : NSArray
我们点击安住Command 点击NSMutableArray可以看到是 class类型,引用类型
类,引用类型 的赋值操作是浅拷贝
*/
var ocArray1 = ocArray
ocArray1.add(7)
print("ocArray1==\(ocArray1)")
print("ocArray==\(ocArray)")
/**
ocArray1==(
1,
2,0)"> 3,0)"> 7
)
ocArray==(
改变ocArray1后,ocArray也改变了,是浅拷贝。
*/
原文链接:https://www.f2er.com/swift/322359.html