[NSMutableDictionary dictionaryWithDictionary:]和mutableCopy之间有区别吗?

时间:2014-02-21 03:21:02

标签: objective-c nsdictionary nsmutabledictionary

以下创建可变字典的方法之间是否存在差异?

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:dict2];

NSMutableDictionary *dict = [dict2 mutableCopy]

3 个答案:

答案 0 :(得分:8)

如果dict2nil[NSMutableDictionary dictionaryWithDictionary:dict2]将返回空字典,[dict2 mutableCopy]将返回nil

答案 1 :(得分:5)

一个细微的区别是dictionaryWithDictionary:类方法返回一个自动释放的对象,而mutableCopy方法返回一个保留的对象。如果您使用自动参考计数,则没有区别;如果您关闭ARC,则需要向通过第二个代码段获得的release发送dict条消息。

答案 2 :(得分:1)

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:dict2];
  • 返回autoreleased个对象。
  • 如果dict2nil,仍会返回有效的空NSMutableDictionary

NSMutableDictionary *dict = [dict2 mutableCopy];

  • 返回您负责发布的copied对象(在非ARC MRR中)。
  • 如果dict2nil,则返回nil