我正在从.plist中加载字典,如下所示:
switches = [NSMutableDictionary dictionaryWithContentsOfFile:
[[NSBundle mainBundle] pathForResource:@"Switches" ofType:@"plist"]];
[switches retain];
现在我需要添加一个新条目(这是另一个字典)。要创建字典并添加它,我这样做:
NSMutableDictionary *newObject = [[NSMutableDictionary alloc]init];
[switches setObject:newObject forKey:@"MyNewObject"];
我是否必须发布newObject
?我的意思是,我认为无论如何switches
会照顾它,对吗?
答案 0 :(得分:2)
是的,您应该在将newObject添加到词典后释放它。因为字典会为保留计数添加+1,并且当您使用“alloc”作为对象初始化的一部分时,您的保留计数为1。
NSMutableDictionary *newObject = [[NSMutableDictionary alloc]init];
[switches setObject:newObject forKey:@"MyNewObject"];
[newObject release];
或
NSMutableDictionary *newObject = [[[NSMutableDictionary alloc]init]autorelease];
[switches setObject:newObject forKey:@"MyNewObject"];
或
NSMutableDictionary *newObject = [NSMutableDictionary dictionary];
[switches setObject:newObject forKey:@"MyNewObject"];
也可以接受
答案 1 :(得分:1)
字典会保留您放入其中的对象(所有可可集合都会这样做),因此您需要释放newObject
。
或者您可以将其创建为自动释放的对象,如下所示:
NSMutableDictionary *newObject = [NSMutableDictionary dictionary];
这样您就不需要明确释放newObject
。