- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经从帖子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];
是深拷贝。是吗?
最佳答案
newArary = oldArray
根本不是副本。您最终会得到两个指向完全相同的内存位置的指针。
newArray = [NSMutableArray arrayWithArray:oldArray];
是浅拷贝。您最终会得到两个不同的数组,因此如果您要从一个数组中删除或添加项目,则不会影响另一个数组。但是,两个数组中的项目是相同的。如果 oldArray
的第一个元素是 NSMutableDictionary
并且您向其中添加了一个键,您会在 newArray
的第一个元素上看到该更改也是如此(因为这两个对象是相同的)。
要进行深复制,您必须创建一个新数组,新数组的每个元素都将是旧数组相应元素的深复制。 (是的,该定义是递归的)。
关于iphone - 深拷贝和浅拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9912794/
免责声明 这篇文章是关于术语“浅拷贝”和“深拷贝”的正确用法,特别是在谈论复制一个不包含任何引用的对象时。这个问题并不意味着(也不应该)基于意见,除非真的没有关于这个话题的共识。我已将此问题标记为 C
我有这个功能 int getrelation(string name, RELATION& output){ bool found=0; int index=0;
与 why should I make a copy of a data frame in pandas 有关 我注意到在流行的backtesting图书馆, def __init__(self, d
我的问题很基础,但我想 100% 理解所有内容。 SO中的很多问题都引用了我的帖子,但我没有找到满意的答案。 我们知道java中的枚举是引用类型。让我们考虑以下片段: public static cl
请引用这个 fiddle 的问题。 http://jsfiddle.net/AQR55/ 1)为什么附加到隔离范围属性的 watch - 双向绑定(bind)到父属性,不会在更改父范围属性时触发。 在
我想使用 UP3 来完成一项非常具体的任务,我应该能够使用 API 来实现该任务。我想了解是否可以编写以下应用程序。 基于https://jawbone.com/support/articles/00
如何在辅助方法中传递上下文并提取数据? 请参阅以下代码片段: import AppContext from '../../context/AppContext' import extractDatta
我正在尝试使用 simple-git 创建浅克隆。我正在尝试创建与此命令等效的命令:git clone --depth 1 https://github.com/steveukx/git-js.git
我是一名优秀的程序员,十分优秀!