0

我正在从 .plist 加载字典,如下所示:

switches = [NSMutableDictionary dictionaryWithContentsOfFile:
                    [[NSBundle mainBundle] pathForResource:@"Switches" ofType:@"plist"]];
[switches retain];

现在我需要向它添加一个新条目(这是另一个字典)。要创建字典并添加它,我这样做:

    NSMutableDictionary *newObject = [[NSMutableDictionary alloc]init];
    [switches setObject:newObject forKey:@"MyNewObject"];

我必须释放newObject吗?我的意思是,我认为switches无论如何都会处理它,对吧?

4

2 回答 2

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"];

也是可以接受的

于 2012-08-06T20:28:44.023 回答
1

字典保留您放入其中的对象(所有可可集合都这样做),因此您确实需要释放newObject.

或者,您可以将其创建为自动释放对象,如下所示:

NSMutableDictionary *newObject = [NSMutableDictionary dictionary];

这样您就不需要newObject显式释放。

于 2012-08-06T20:04:15.167 回答