【发布时间】:2012-04-12 08:34:17
【问题描述】:
我已经从帖子What is the difference between a deep copy and a shallow copy? 中阅读了关于深拷贝和浅拷贝之间区别的答案。现在我有点怀疑,当我们通过
制作浅拷贝时 newArray = [NSmutableArray arrayWithArray:oldArray];
新数组将指向 oldArray。 (如图)。现在当我从 newArray 中删除对象时会发生什么?如图所示,它也应该从 oldArray 中删除相同的元素!!!好像
newArray = oldArray 是浅拷贝,newArray = [NSmutableArray arrayWithArray:oldArray]; 是深拷贝。对吗?
【问题讨论】:
-
newArray = oldArray 根本不是副本。它只是指向同一个数组的第二个变量。
-
使用
arrayWithArray:,您有一个引用相同对象的新数组。 -
这是一种复制数组深拷贝的方法stackoverflow.com/a/647269/1189448
-
我找到了复制真正深拷贝的好答案stackoverflow.com/a/15040786/1189448