【问题标题】:Why NSString is still there if I can do everything with NSMutableString? [duplicate]如果我可以用 NSMutableString 做所有事情,为什么 NSString 仍然存在? [复制]
【发布时间】:2017-09-04 14:20:46
【问题描述】:

我是新的 Objective-c 编程。我正在阅读有关NSStingNSMutableString 的信息。 NSString 基本上是不可变的字符串,而 NSMutableString 顾名思义是可变的。很好但是我想知道除了可变和不可变之外,如果我可以使用NSMutableString 执行NSString 的所有操作,为什么NSString 仍然不被弃用。谁能给我解惑??

【问题讨论】:

  • 我相信你的问题已经回答了检查this & this
  • 感谢@MahbubAhmed 和@gema 的回复。这真的很有帮助。所以请让我更正一下,我基本上理解的NSString 性能方面(从编译器的角度来看,它消除了用于值检查和开销的额外条件)和内存方面NSString 总是在新分配值上创建新内存,如link 所述。

标签: ios objective-c nsstring nsmutablestring


【解决方案1】:

在内存开销的情况下,一切都与性能有关。来自苹果site

性能也是表示字符串和字典等对象的不可变版本的一个原因。基本实体(如字符串和字典)的可变对象会带来一些开销。因为它们必须动态管理一个可变的后备存储——根据需要分配和释放内存块——可变对象的效率可能低于它们的不可变对象。

所以在我看来,NSString 的不可变版本很重要。我们必须始终牢记我们的代码性能和效率。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-27
    • 2015-08-01
    • 2021-01-24
    • 2019-05-20
    • 1970-01-01
    • 2017-01-06
    • 2012-09-09
    • 1970-01-01
    相关资源
    最近更新 更多