如何简洁地处理这种情况。我没有在 if
语句中正确释放 contactDictionary
...
NSNumber *pIDAsNumber;
...
NSMutableDictionary *contactDictionary = [NSMutableDictionary dictionaryWithDictionary:[defaults dictionaryForKey:kContactDictionary]];
if (!contactDictionary) {
contactDictionary = [[NSMutableDictionary alloc] initWithCapacity:1];
}
[contactDictionary setObject:pIDAsNumber forKey:[myClass.personIDAsNumber stringValue]];
[defaults setObject:contactDictionary forKey:kContactDictionary];
最佳答案
通常,使用[NSMutableDictionarydictionaryWithCapacity:1]
而不是alloc/init。这将为您提供一个自动释放的字典,从内存管理的角度来看,其行为与上面的字典相同。然而...
在这种特定情况下,您的 if 子句永远不会为真(除非您耗尽内存,在这种情况下您会遇到更大的问题)。 -dictionaryWithDictionary:
如果传递 nil,则返回一个空字典而不是 nil。因此,即使 -dictionaryForKey:
返回 nil,-dictionaryWithDictionary:
仍然会创建一个空的可变字典供您添加。
关于objective-c - 快速发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2695099/