我想问一下所有 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 的编码员:你不想改变对象吗?使用可变变量之一。