2012-08-22 30 views
3

我想问所有的可可老兵在那里 - 有没有在性能差异的情况下,使用可变与不可变对象之间等:的stringByAppendingString:性能的可变与不可变对象

  • NSStringNSMutableStringappendString:
  • NSArrayarrayByAddingObject:NSMutableArrayaddObject:
  • ...

谢谢你,快乐的编码!

+0

在每个可变和不可变的方法调用之前和之后制作一个带有时间戳记的日志,您可以自己查看哪个更快。 –

回答

2

这个问题很难回答:NSArrayNSString不是实际的实现,它们是类集群,所以NSMutableArrayNSMutableString。下面的真实实现无法确定,因此性能难以比较。 你可能不会找到一个明确的答案。

但我会是:stringByAppendingStringarrayByAddingObject创建新的对象包含了修改,当前项目复制到内存中的一个新的地方,NSMutableArrayNSMutableString应该有更好的表现,因为他们在建造时,尽可能防止复制(实际上并非如此,因为NSMutableArray可能会在添加元素时复制内存,但不会每次都添加元素)。

我认为你应该信任这个CoreFoundation编码器:你不想改变对象?使用可变的一个。

+0

非常好的解释。非常感谢,这正是我想知道的。 –