【发布时间】:2020-10-06 17:19:31
【问题描述】:
内部工作原理是什么?
它会创建 C 字符串数据的 Swift 字符串副本吗?
它是否将其用作引用并将其作为 Swift 字符串返回,因此返回的字符串使用相同的数据?它是如何工作的?
它是否将 C 字符串复制到新分配的 Swift 字符串中?
如果String(cString: UnsafePointer<Int8>)确实通过将C字符串复制到新分配的swift字符串来工作,有没有办法通过引用已经存在的数据而不是复制来将C字符串转换为swift?
String(cString: UnsafePointer<Int8>) 是如何工作的,我如何确定它是否复制,或者它是否引用与 Swift 字符串相同的内存?
【问题讨论】:
-
您阅读过文档吗? developer.apple.com/documentation/swift/string/1641523-init "通过复制给定指针引用的以 null 结尾的 UTF-8 数据创建一个新字符串。"
-
我尝试编辑您的问题,使其不再像文字墙一样,但仍然有很多重复,请以不同的方式询问相同的问题。您可以根据需要将其编辑下来吗?
-
另外,实现是开源的。如果您有兴趣,可以自己深入了解:github.com/apple/swift/blob/…
标签: swift string pointers memory