以下创建可变字典的方法之间是否存在差异?
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:dict2];
NSMutableDictionary *dict = [dict2 mutableCopy]
答案 0 :(得分:8)
如果dict2
为nil
,[NSMutableDictionary dictionaryWithDictionary:dict2]
将返回空字典,[dict2 mutableCopy]
将返回nil
。
答案 1 :(得分:5)
一个细微的区别是dictionaryWithDictionary:
类方法返回一个自动释放的对象,而mutableCopy
方法返回一个保留的对象。如果您使用自动参考计数,则没有区别;如果您关闭ARC,则需要向通过第二个代码段获得的release
发送dict
条消息。
答案 2 :(得分:1)
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:dict2];
autoreleased
个对象。dict2
为nil
,仍会返回有效的空NSMutableDictionary
。 NSMutableDictionary *dict = [dict2 mutableCopy];
copied
对象(在非ARC MRR中)。dict2
为nil
,则返回nil
。