例子1:如下边的例子,当 testX赋值给testY的时候,testX的值是不会发生改变的。在赋值的时候会自动把整个数组本地copy一份,所有对它的改变都不会影响调用者所持有的数组。
var testX = [1,2,3]
var testY = testX
testy.append(4)
print(testX) //[1, 2, 3]
print("========")
print(testY)//[1, 2, 3, 4]
例子2:Foundation 框架中NSArray如果要实现相同的作用需要进行如下处理:
错误处理方法
let a = NSMutableArray(array: [1,2,3])
let b:NSArray = a
a.insert(4, at: 3)
print(a)//(1,2,3,4)
print("=======")
print(b)//(1,2,3,4)
正确的方式是在赋值时,先手动进行复制:
let c = NSMutableArray(array: [1,2,3])
// 我们不想让 d 发生改变
let d = c.copy() as! NSArray
c.insert(4, at: 3)
d // ( 1, 2, 3 )”
网友评论