gpt4 book ai didi

iphone - 深拷贝和浅拷贝

转载 作者:行者123 更新时间:2023-12-03 18:21:54 27 4
gpt4 key购买 nike

我已经从帖子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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com