【发布时间】:2009-04-28 08:53:24
【问题描述】:
我觉得当我使用 NSArray 时,我可能会在将来的某个时间限制自己。是否有充分的理由更喜欢这种“原始”而不是可变的“复杂”?
【问题讨论】:
标签: iphone cocoa-touch collections
我觉得当我使用 NSArray 时,我可能会在将来的某个时间限制自己。是否有充分的理由更喜欢这种“原始”而不是可变的“复杂”?
【问题讨论】:
标签: iphone cocoa-touch collections
在您的代码中使用非可变结构并没有太大的限制 - 如果您以后需要对其进行修改,您可以更改为使用可变结构。如果您将其放在外部界面中,请注意它可能会受到更多限制。不可变的主要优点是您可以获得线程安全并且更容易概念化代码 - 如果将可变性排除在等式之外,您就不必担心。这就是为什么我们有const 约束等等 - 如果您不必修改数据,最好提前说出来。
【讨论】:
一个原因是YAGNI 原则。如果您不需要可变数组,请不要使用它。因此您的代码将更易于理解、测试和维护。
请记住,代码不仅由编译器处理,还由编码人员或测试人员读取。使用NSMutableArray 而不是NSArray 对他们来说是有意义的。向他们提供有关您意图的虚假信息可能会适得其反。
【讨论】:
除了来自 Mssrs INFORMATION 和 mouviciel 的答案之外,NSArray 比 NSMutableArray 快。这适用于所有 stati/mutable 集合。
【讨论】: