【发布时间】:2026-02-25 02:45:02
【问题描述】:
以下创建可变字典的方式有区别吗?
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:dict2];
NSMutableDictionary *dict = [dict2 mutableCopy]
【问题讨论】:
标签: objective-c nsdictionary nsmutabledictionary
以下创建可变字典的方式有区别吗?
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:dict2];
NSMutableDictionary *dict = [dict2 mutableCopy]
【问题讨论】:
标签: objective-c nsdictionary nsmutabledictionary
如果dict2 是nil,[NSMutableDictionary dictionaryWithDictionary:dict2] 将返回一个空字典,[dict2 mutableCopy] 将返回nil。
【讨论】:
一个细微的区别是dictionaryWithDictionary: 类方法返回一个自动释放的对象,而mutableCopy 方法返回一个保留对象。如果使用自动引用计数,则没有区别;如果关闭ARC,则需要向通过第二个sn-p获取的dict发送release消息。
【讨论】:
dict2 为nil,mutableCopy 将返回nil,而dictionaryWithDictionary:nil 将始终返回NSMutableDictionary。
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:dict2];
autoreleased 对象。dict2 是nil,仍然返回一个有效的空NSMutableDictionary。 NSMutableDictionary *dict = [dict2 mutableCopy];
copied 对象(在非 ARC MRR 中)。dict2 是nil,则返回nil。【讨论】: