unshare()和copy()之间的区别是什么?

时间:2014-06-04 18:10:42

标签: arrays swift

unshare()copy()都用于复制数组,但我无法看到差异。

5 个答案:

答案 0 :(得分:4)

如果已经没有共享被叫方,

unshare()将不执行任何操作。 copy()无论如何都会复制它。

答案 1 :(得分:4)

取消共享

正如Apple documentation unshare所说确保数组的副本是唯一的,因此当您调用unshare时,您将获得非共享副本如果这是对数组的唯一引用,则该数组可以是相同的数组。

复制

另一方面,copy强制复制数组,并返回包含复制项目的新数组

因此,如果您希望拥有2个独立的数组副本,则应在其他情况下使用copy,您可以使用unsare来确保数组没有其他引用。

答案 2 :(得分:3)

这已经改变了Beta 3. unshare()和copy()都已从Array中删除。数组现在是copy-on-write,其默认行为与调用unshare()非常相似。

http://blog.human-friendly.com/swift-arrays-beta-3-hooray

答案 3 :(得分:2)

来自documentation

  

如果您只需要确保对数组内容的引用是唯一存在的引用,请调用unshare方法,而不是copy方法。除非有必要,否则unshare方法不会复制数组。复制方法始终复制数组,即使它已经是非共享的。

基本上,如果它是唯一的参考,unshare将不会做任何事情。复制将以任何一种方式完成。

答案 4 :(得分:2)

根据Swift编程指南(第298页):

  

“如果你只需要确定你对数组的引用   内容是唯一存在的引用,调用unshare方法,   不是复制方法。 unshare方法不会复制   数组,除非有必要这样做。复制方法始终复制   数组,即使它已经没有共享。“

摘自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/us/jEUH0.l