gpt4 book ai didi

objective-c - 修改复制的 NSMutableDictionary 也会修改原始的

转载 作者:行者123 更新时间:2023-12-01 17:43:53 25 4
gpt4 key购买 nike

我有一个 NSMutableDictionary调用source ,然后我以这种方式创建另一个:

NSMutableDictionary *new = [source copy];

但是当我修改 new 之一时的值, source 的值也被修改。这是为什么?

最佳答案

问题是 iOS(和 OSX)使用浅拷贝。这意味着新集合中的对象与原始集合中的对象相同。正如@danDedo 在他的回答中所说,您的副本是不可变的 - 它是一个字典而不是可变字典(因此您无法添加或删除对象)。但是对象是一样的。因此,如果这些对象本身是可变的,那么一处的更改将影响所有引用(即副本中的所有对象)。

解决这个问题的方法是编写自己的“深拷贝”(如果需要)——您肯定可以在此处找到搜索“深拷贝”的示例。

关于objective-c - 修改复制的 NSMutableDictionary 也会修改原始的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11805133/

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