有什么理由我更喜欢NSArray而不是NSMutableArray吗?

时间:2009-04-28 08:53:25

标签: iphone cocoa-touch collections

我觉得当我使用NSArray时,我可能会在未来的某个时间限制自己。是否有任何充分的理由选择这种“原始”而不是“复杂”的,这是可变的?

3 个答案:

答案 0 :(得分:6)

在代码中使用不可变的结构并不是一个约束 - 如果事后证明你需要修改它,你可以改为使用可变的结构。如果你在外部界面中考虑到这一点,它可能更具约束力。不可变的主要优点是你获得了线程安全性,并且更容易将代码概念化 - 如果从等式中取出可变性,则不太关心你。这就是为什么我们有const约束等等 - 如果您不必修改数据,最好事先说出来。

答案 1 :(得分:2)

一个原因是YAGNI原则。如果您不需要可变数组,请不要使用它。因此,您的代码将更易于理解,测试和维护。

请记住,代码不仅由编译器处理,还由编码器或测试人员读取。使用NSMutableArray代替NSArray对他们有意义。向他们提供有关您意图的虚假信息可能会适得其反。

答案 2 :(得分:2)

除了来自Mssrs INFORMATION和mouviciel的答案,NSArray比NSMutableArray更快。对于所有stati / mutable集合都是如此。