NSMutableDictionary *attrs = [nodeAttributes objectForKey:UUID];//nodeAttributes is NSMutalbleDictionary
if (attrs == nil) {
attrs = [[NSMutableDictionary alloc] init];
[nodeAttributes setObject:attrs forKey:UUID];
[attrs release];
}
我不确定这段代码是否有效...我应该用这样的东西代替这个吗
NSMutableDictionary *attrs = [nodeAttributes objectForKey:UUID];//nodeAttributes is NSMutalbleDictionary
if (attrs == nil) {
attrs = [[NSMutableDictionary alloc] init];
[nodeAttributes setObject:[attrs retain] forKey:UUID];
[attrs release];
}
我不确定 setObject 方法是否会增加引用计数...
最佳答案
NSMutableDictionary 的 setObject
将保留对象(这是 documented ),因此代码的第一位是正确的,第二位是泄漏的。在风格方面,读者可能更清楚地执行以下操作:
if (attrs == nil) {
attrs = [NSMutableDictionary dictionary];
[nodeAttributes setObject:attrs forKey:UUID];
}
尽管在内存管理方面,您的方法可能更好,因为它避免(隐式)使用自动释放。
关于objective-c - Objective-C ,NSMutableDictionary 引用计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5293728/