【发布时间】:2010-09-01 02:51:09
【问题描述】:
[我已经阅读了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 返回什么?它是指向字典中保存的对象的指针吗?还是指向对象副本的指针? (我假设只是返回一个指向现有对象的指针。)
第二季度。这里发生了什么,内存管理明智?我假设“数组”指向一个仍然保留(由拥有的字典对象)的对象,并且我不必保留该对象来使用它。对吗?
谢谢。
【问题讨论】:
标签: cocoa memory-management nsdictionary