我想问一下所有 Cocoa 的老手——在以下情况下使用可变对象和不可变对象之间的性能有什么区别:
NSString
'sstringByAppendingString:
与NSMutableString
'sappendString:
NSArray
'sarrayByAddingObject:
与NSMutableArray
'saddObject:
- ...
谢谢你,编码愉快!
我想问一下所有 Cocoa 的老手——在以下情况下使用可变对象和不可变对象之间的性能有什么区别:
NSString
'sstringByAppendingString:
与NSMutableString
'sappendString:
NSArray
'sarrayByAddingObject:
与NSMutableArray
'saddObject:
谢谢你,编码愉快!
这个问题很难回答:NSArray
并且NSString
不是实际的实现,它们是类集群,andNSMutableArray
也是NSMutableString
。无法确定底层的真正实现,因此很难比较性能。你可能不会找到一个明确的答案。
但我猜是:stringByAppendingString
并arrayByAddingObject
创建包含修改的新对象,即将当前项目复制到内存中的新位置,NSMutableArray
并且NSMutableString
应该具有更好的性能,因为它们的构建是为了在可能的情况下防止复制(实际上并非如此,因为NSMutableArray
可能会重新复制内存当添加元素但不是每次都添加时)。
我认为你应该相信 CoreFoundation 的编码员:你不想改变对象吗?使用可变变量之一。