Swift中哪些值类型支持copy-on-write?

Art*_*tch 6 collections struct value-type copy-on-write swift

我在这里阅读了关于Swift中Array的copy-on-write实现.

与标准库中的所有可变大小集合一样,数组使用copy-on-write优化.在您修改其中一个副本之前,阵列的多个副本共享相同的存储.当发生这种情况时,被修改的数组将使用其自身的唯一拥有副本替换其存储,然后对其进行修改.有时应用优化可以减少复制量.

我想知道你是否有任何关于哪种结构支持写时复制的信息.

Dal*_*kar 5

副本上写的支持String和所有的集合类型- Array,DictionarySet.

除此之外,编译器可以自由地优化任何结构访问,并有效地为您提供写时复制语义,但不能保证.

  • “不保证”是一种表达方式。如果您想要写时复制语义,请显式使用“isKnownUniquelyReferenced(&ref)”。(此外,您“必须仅通过具有适当线程同步的变异方法来调用此函数”;请注意,文本并未指出标准不同步集合如何设法避免违反这一点。 com/apple/swift/blob/master/docs/OptimizationTips.rst#advice-use-copy-on-write-semantics-for-large-values)) https://marcosantadev.com/copy-write-swift-value -类型/ (2认同)