【问题标题】:Are there any reasons why I should prefer an NSArray instead of NSMutableArray?有什么理由让我更喜欢 NSArray 而不是 NSMutableArray?
【发布时间】:2009-04-28 08:53:24
【问题描述】:

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

【问题讨论】:

    标签: iphone cocoa-touch collections


    【解决方案1】:

    在您的代码中使用非可变结构并没有太大的限制 - 如果您以后需要对其进行修改,您可以更改为使用可变结构。如果您将其放在外部界面中,请注意它可能会受到更多限制。不可变的主要优点是您可以获得线程安全并且更容易概念化代码 - 如果将可变性排除在等式之外,您就不必担心。这就是为什么我们有const 约束等等 - 如果您不必修改数据,最好提前说出来。

    【讨论】:

    • 没错。使其不可变会强制执行您的接口契约。
    • 另外,NSMutableArray 比 NSArray 稍慢。如果您需要速度,请使用 NSArray 或手动管理的 C 数组。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      除了来自 Mssrs INFORMATION 和 mouviciel 的答案之外,NSArray 比 NSMutableArray 快。这适用于所有 stati/mutable 集合。

      【讨论】:

        猜你喜欢
        • 2011-11-03
        • 1970-01-01
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        • 2011-06-18
        • 2010-12-03
        • 2015-08-13
        • 1970-01-01
        相关资源
        最近更新 更多