2017-04-09 68 views
0

我是新的Objective-C编程。我正在阅读约NSStingNSMutableStringNSString基本上是不可变的字符串,而NSMutableString是可变的,因为它的名字暗示。这很好但是我想知道除了可变和不可变之外,为什么NSString还不推荐使用,如果我可以使用NSMutableString执行NSString的所有操作。任何人都可以向我清楚?为什么NSString仍然存在,如果我可以做任何事情与NSMutableString?

+0

我相信你的问题已经回答检查[this](http://stackoverflow.com/questions/16460779/what-is-actual-difference-between-nsstring-and-nsmutable-string-in-objective -cw)&[this](http://stackoverflow.com/questions/1749571/what-is-the-purpose-of-having-both-nsmutablestring-and-nsstring) –

+0

感谢@MahbubAhmed和@gema的回应。这真的很有帮助。所以请让我改正,基本上我明白'NSString'的性能(从编译器的角度来看,它消除了额外的值检查和开销条件)和内存方面的'NSString'总是在新分配值上创建新的存储器[link]( http://stackoverflow.com/questions/1749571/what-is-the-purpose-of-having-both-nsmutablestring-and-nsstring)。 –

回答

0

这是关于内存开销情况下的性能。来自Apple site

性能也是对象的不可变版本(例如字符串和字典)的一个原因。基本实体(如字符串和字典)的可变对象为它们带来了一些开销。因为它们必须动态地管理一个可变的后台存储 - 根据需要分配和释放内存块,所以可变对象的效率可能比不可变对象的效率要低。

所以在我看来,NSString的不可变版本很重要。我们总是需要记住我们的代码性能和效率。

相关问题