Fra*_*kZp 2 objective-c nsdictionary nsmutablearray nsarray nsmutabledictionary
我经常需要更改一个NSArray或一个的内容NSDictionary.通常我会这样:NSDictionary- >创建NSMutableDictionary并编辑它 - >用编辑过的原件替换原件NSDictionary(作为不可变的).
我知道有两种方法可以做到这一点:
1)使用mutable copy和copy:
NSDictionary *myDictionary = @{...};
NSMutableDictionary *dicToEdit = myDictionary.mutableCopy;
// Editing goes here`
myDictionary = dicToEdit.copy;
Run Code Online (Sandbox Code Playgroud)
2)使用arrayWithArray:或dictionaryWithDictionary:
NSDictionary *myDictionary = @{...};
NSMutableDictionary *dicToEdit = [NSMutableDictionary dictionaryWithDictionary:myDictionary];
// Editing goes here
myDictionary = [NSDictionary dictionaryWithDictionary:dicToEdit];
Run Code Online (Sandbox Code Playgroud)
这两种方式有什么区别吗?或者这两种方式中的一种有问题吗?
首先,我建议不要使用属性点语法myDictionary.mutableCopy而不是方法消息传递语法[myDictionary mutableCopy].这些意思完全相同,但我只保留实际属性的点符号(copy并且mutableCopy是方法,而不是属性).
要回答你的问题,这两种复制字典的方法的内部结构可能会有微妙的差异,但我相信它们在功能上几乎相同.
我可能会建议使用,2)因为虽然稍微简洁一点,但我会说它使得代码意图更加清晰,并且当你需要两个NSDictionary *指向相同字典的不同变量时更加可辨别.
另外,我会说这2)使得代码语义更容易理解.随1)您指示接收对象是否要获取可变或不可变副本.有了2)你不关心你正试图复制字典是否是可变的或不可变的:所产生的字典的易变性只是取决于你所使用的init方法.
但最终它只是归结为个人偏好我想.
| 归档时间: |
|
| 查看次数: |
2440 次 |
| 最近记录: |