【问题标题】:Difference between NSArray and NSMutableArrayNSArray 和 NSMutableArray 的区别
【发布时间】:2010-11-23 15:10:04
【问题描述】:

NSArray 和 NSMutableArray 有什么区别?

【问题讨论】:

  • 做个好人...我们都必须从某个地方开始,文档对于新手来说可能非常神秘。

标签: iphone nsmutablearray nsarray


【解决方案1】:

NSArray : 在 NSArray 中我们不能改变索引.... 表示修复数组。

NSMutableArray : 在 NSMutableArray 中,我们可以更改索引并在运行时添加数组中的值..

【讨论】:

    【解决方案2】:

    NSMutableArray(以及所有其他名称中带有Mutable 的类)可以修改。所以,如果你创建一个普通的NSArray,你以后不能改变它的内容(不重新创建它)。但是如果你创建一个NSMutableArray,你可以改变它——你会注意到它有像-addObject:和-insertObject:atIndex:这样的方法。

    详情请见the documentation。

    【讨论】:

      【解决方案3】:

      “可变”类型是可以在初始化后更改的类,例如 NSMutableString 与 NSString。

      【讨论】:

      • NSMutableString 派生自 NSString。因此,您不能依赖从外部收到的“NSString*”是不可变的。您只能假设 NSMutableString* 是可变的。 NSString* 可以是可变的或不可变的。这就是为什么当实例分配给类中的某个属性时,您可能希望调用 [str copy]。
      • NSString 构建完成后就无法更改。见stackoverflow.com/questions/905396/…。至于为什么要用copy,见stackoverflow.com/questions/387959/…
      • Shaggy:您不能更改NSString 类的instance。这不是问题。问题是“NSString*”不一定指向NSString 类的实例。它还可以指向派生自NSString 的类的实例,例如NSMutableString。因此,您不能依赖从外部世界收到的NSString* 是不可变的。
      • 好的,我现在明白了。我将删除我的那部分答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      相关资源
      最近更新 更多