Cocoa-NSDictionary objectForKey-内存管理说明

Cocoa-NSDictionary objectForKey-内存管理说明,cocoa,memory-management,nsdictionary,Cocoa,Memory Management,Nsdictionary,[我已经阅读了Cocoa内存管理规则,但仍想确定一下,并想知道这是否是一种好形式。] 我的类有一个可变字典ivar: NSMutableDictionary *m_Dict; ... m_Dict = [NSMutableDictionary dictionaryWithCapacity:10]; [m_Dict retain]; 在某个时候,我将向字典中添加一个可变数组: NSMutableArray *array = [NSMutableArray arrayWithCapacity:

[我已经阅读了Cocoa内存管理规则,但仍想确定一下,并想知道这是否是一种好形式。]

我的类有一个可变字典ivar:

NSMutableDictionary *m_Dict;

...

m_Dict = [NSMutableDictionary dictionaryWithCapacity:10];
[m_Dict retain];
在某个时候,我将向字典中添加一个可变数组:

NSMutableArray *array = [NSMutableArray arrayWithCapacity:100];
[m_Dict setObject:array forKey: @"myArray"];
此时,我相信数组对象已被字典保留。因此,在将对象添加到字典之前,我不会保留该对象。这是正确的吗

稍后,出于读取目的,我将访问阵列:

NSMutableArray *array = [m_Dict objectForKey: @"myArray"];
Q1.objectForKey返回了什么?它是指向字典中所包含对象的指针吗?还是指向对象副本的指针?(我假定返回的只是指向现有对象的指针。)

Q2。内存管理方面,这里发生了什么?我假设“array”指向一个仍然保留的对象(由拥有的dictionary对象保留),并且我不必保留该对象来使用它。对吗

谢谢。

Q1)返回与您之前添加的Objective-C数组相同的指针。没有复制

问题2)正确。数组中的所有项都属于该数组。如果某个东西拥有另一个东西,它会对它进行计数

当您从数组中删除对象时,保留计数将减少,并且对象(可能)将被解除分配。

Q1)返回与您之前添加的Objective-C数组相同的指针。没有复制

问题2)正确。数组中的所有项都属于该数组。如果某个东西拥有另一个东西,它会对它进行计数

从数组中删除对象时,保留计数将减少,并且对象(可能)将被解除分配