Cocoa-NSDictionary objectForKey-内存管理说明
[我已经阅读了Cocoa内存管理规则,但仍想确定一下,并想知道这是否是一种好形式。] 我的类有一个可变字典ivar: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:
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)正确。数组中的所有项都属于该数组。如果某个东西拥有另一个东西,它会对它进行计数
从数组中删除对象时,保留计数将减少,并且对象(可能)将被解除分配