首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift中的字符串连接是否生成新副本?

Swift中的字符串连接是否生成新副本?
EN

Stack Overflow用户
提问于 2017-07-21 12:39:55
回答 2查看 1.3K关注 0票数 4

我可以像这样在Swift中连接两个字符串:

var c = "Hello World" c += "!"

这会创建一个新字符串吗?(分配一个新的内存块,复制原始字符串,连接"!“)字符串并返回新内存。)或者,它是否在适当的位置更新原始字符串(仅在原块不能适应该字符时分配新的内存块)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-21 12:47:59

不,它不制造新的副本。如您所见,原始字符串具有changed.But --地址保持不变。

票数 4
EN

Stack Overflow用户

发布于 2017-07-21 12:54:58

正如苹果文档中所说的:https://developer.apple.com/documentation/swift/string

在性能优化部分:“虽然Swift中的字符串具有值语义,但字符串使用写复制策略将其数据存储在缓冲区中。然后,该缓冲区可以由不同的字符串副本共享。字符串的数据只有在多个字符串实例使用相同缓冲区时,在变异时才被懒散地复制。因此,在任何变化操作中的第一个操作可能会花费O(n)时间和空间。”

IOs使用复制即写,因此,如果多个进程使用相同的变量,或者有多个副本(我不完全理解这个部分),它就会复制,但是如果变量只用于一个进程,并且只有一个副本,那么您可以随意修改它,而不必生成副本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45237970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档