3

我想问一下所有 Cocoa 的老手——在以下情况下使用可变对象和不可变对象之间的性能有什么区别:

  • NSString'sstringByAppendingString:NSMutableString'sappendString:
  • NSArray'sarrayByAddingObject:NSMutableArray'saddObject:
  • ...

谢谢你,编码愉快!

4

1 回答 1

1

这个问题很难回答:NSArray并且NSString不是实际的实现,它们是类集群,andNSMutableArray也是NSMutableString。无法确定底层的真正实现,因此很难比较性能。你可能不会找到一个明确的答案。

但我是:stringByAppendingStringarrayByAddingObject创建包含修改的新对象,即将当前项目复制到内存中的新位置,NSMutableArray并且NSMutableString应该具有更好的性能,因为它们的构建是为了在可能的情况下防止复制(实际上并非如此,因为NSMutableArray可能会重新复制内存当添加元素但不是每次都添加时)。

我认为你应该相信 CoreFoundation 的编码员:你不想改变对象吗?使用可变变量之一。

于 2012-08-22T09:58:55.337 回答