- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
哪个被认为是从原始字典派生新字典的更好方法:
[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/
以下创建可变字典的方式有区别吗? NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:dict2]; N
哪个被认为是从原始字典派生新字典的更好方法: [NSDictionary dictionaryWithDictionary:otherDictionary]; 或 [otherDictionary c
我是一名优秀的程序员,十分优秀!