Ios NSMutableArray中的内存管理

Ios NSMutableArray中的内存管理,ios,objective-c,nsmutablearray,nsdictionary,nsmutabledictionary,Ios,Objective C,Nsmutablearray,Nsdictionary,Nsmutabledictionary,我在使用字典时有点困惑。我有一个数组(nameArray),我将该数组添加到字典(nameDict),最后我将该字典添加到另一个字典(requestDict) 当我从nameDict中删除对象时,requestDict不受影响 [nameDict removeAllObjects] 到目前为止还不错。但我的问题是,当我从nameArray中删除对象时,为什么responseDict会受到影响 [nameArray removeAllObjects] 为什么nameArray仍然有对象。当我从n

我在使用字典时有点困惑。我有一个数组(nameArray),我将该数组添加到字典(nameDict),最后我将该字典添加到另一个字典(requestDict)

当我从nameDict中删除对象时,requestDict不受影响

[nameDict removeAllObjects]
到目前为止还不错。但我的问题是,当我从nameArray中删除对象时,为什么responseDict会受到影响

[nameArray removeAllObjects]

为什么nameArray仍然有对象。当我从nameDict中删除对象时,它不应该被释放吗。如果我遗漏了什么,请帮助我理解


在这种情况下,如果我将nameArray设置为nil,会发生什么

无论是
nameDict
还是
requestDict
都引用了
nameArray
指向的单个数组。对
nameArray
所做的更改可在两个词典中看到

执行
[nameArray removeAllObjects]
操作时,您会在两个字典中看到对数组的更改,因为两个字典都引用可变数组的一个副本


如果将
nameArray
设置为
nil
,则不会发生任何事情。这两个字典仍然有对可变数组的引用。

但我从未在nameArray和requestDict之间进行过引用。相反,我将nameArray添加到nameDict。requestDict不应该引用nameDict,而nameDict不应该引用nameArray吗?当然可以
nameDict
包含
nameArray
。然后创建一份
nameDict
的副本,作为
requestDict
。这意味着
requestDict
引用了与
nameDict
完全相同的对象(浅拷贝)。。。谢谢…:)话虽如此,如果我想让nameArray清除它的所有值,我该如何实现它呢。例如,我在循环中设置nameDict。我将nameArray添加到dict中。在第二个循环中,我希望nameArray不应包含任何对象。调用
removeAllObjects
将从数组中删除所有对象。由于两个字典都引用同一个数组,因此对象也将从中消失。
[nameDict removeAllObjects]