gpt4 book ai didi

ios - NSMutableArray 中的内存管理

转载 作者:行者123 更新时间:2023-11-29 12:15:55 25 4
gpt4 key购买 nike

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

NSMutableArray *nameArray = [[NSMutableArray alloc] initWithObjects:@"abcd",@"lmnop",@"xyz",@"pqr", nil];
NSMutableDictionary *nameDict = [NSMutableDictionary alloc] initWithObjectsAndKeys:nameArray,@"name", nil];
NSDictionary *requestDict = [NSDictionary dictionaryWithDictionary:nameDict];

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

[nameDict removeAllObjects]

到目前为止一切顺利。但我的查询是,当我从 nameArray 中删除对象时,为什么 responseDict 会受到影响。

[nameArray removeAllObjects];

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

如果我在这种情况下将 nameArray 设置为 nil 会怎样?

最佳答案

nameDictrequestDict 都引用了nameArray 指向的单个数组。两个词典都可以看到对 nameArray 所做的更改。

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

如果将 nameArray 设置为 nil,则什么也不会发生。两个字典仍然有对可变数组的引用。

关于ios - NSMutableArray 中的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31995292/

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