NSMutableArray 中的内存管理
Memory Management in NSMutableArray
我在使用 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 会怎样?
nameDict
和 requestDict
都引用了 nameArray
指向的单个数组。两个词典都可以看到对 nameArray
所做的更改。
当您执行 [nameArray removeAllObjects]
时,您会在两个词典中看到数组的更改,因为两个词典都引用可变数组的一个副本。
如果将 nameArray
设置为 nil
,则不会发生任何事情。两个字典仍然引用可变数组。
我在使用 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 会怎样?
nameDict
和 requestDict
都引用了 nameArray
指向的单个数组。两个词典都可以看到对 nameArray
所做的更改。
当您执行 [nameArray removeAllObjects]
时,您会在两个词典中看到数组的更改,因为两个词典都引用可变数组的一个副本。
如果将 nameArray
设置为 nil
,则不会发生任何事情。两个字典仍然引用可变数组。