这被认为是从原始字典中派生出新字典的更好方法:
[NSDictionary dictionaryWithDictionary:otherDictionary];
或者
[otherDictionary copy];
?
我们有时需要从一本不可变的字典中制作一个可变的字典,因此这个问题不断出现。也许没有,但是我很好奇,看看在某些用例中,哪一种比另一种更好。
编辑:我确实知道上述方法不能用于派生可变字典。我只是想以一般的方式提出问题,然后说明我每天如何面对这个问题。我应该对此更加清楚。
最佳答案
实际上,它们是不同的,但并非出于您期望的原因。我将假设您使用的是ARC(如果不使用,为什么呢?),所以返回对象的自动释放无关紧要。
它们的区别在于:考虑如果otherDictionary
是nil
会发生什么。
好吧,如果您使用:
[otherDictionary copy]; // or -mutableCopy
您将获得
nil
,因为您有一个nil
接收器。另一方面,如果您使用:
[NS(Mutable)Dictionary dictionaryWithDictionary:otherDictionary];
无论
NS(Mutable)Dictionary
是否为otherDictionary
,您都将取回nil
。这在需要创建字典副本并随后需要
NSDictionary
实例,但又不想测试nil
的情况下很好(可以降低循环复杂度!)。关于objective-c - NSDictionary + dictionaryWithDictionary还是-copy?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17076974/