objective-c - Objective-C ,NSMutableDictionary 引用计数

标签 objective-c nsmutabledictionary

    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/

相关文章:

iphone - 调整 UIView 的大小而不使用动画

objective-c - 如何在 iOS 的工具栏上实现指针箭头?

objective-c - 内存泄漏?还是乐器有毛病?

ios - 如何在 NSUserDefaults 中存储和检索 NSMutableDictionary?

ios - 收到内存警告的未知原因

ios - 对 NSMutableDictionary 进行排序

php - 如何使用警报 View 单击按钮来更新 sql 中的值?

Objective-C – 理解协议(protocol)引用

iphone - ios 我如何比较 nsmutablearray 中的 nsdictionary

ios - 如何在ios字典中创建包含可变数组的参数(mutabledictionary)