unshare()
和copy()
都用于复制数组,但我无法看到差异。
答案 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()非常相似。
答案 3 :(得分:2)
如果您只需要确保对数组内容的引用是唯一存在的引用,请调用unshare方法,而不是copy方法。除非有必要,否则unshare方法不会复制数组。复制方法始终复制数组,即使它已经是非共享的。
基本上,如果它是唯一的参考,unshare将不会做任何事情。复制将以任何一种方式完成。
答案 4 :(得分:2)
根据Swift编程指南(第298页):
“如果你只需要确定你对数组的引用 内容是唯一存在的引用,调用unshare方法, 不是复制方法。 unshare方法不会复制 数组,除非有必要这样做。复制方法始终复制 数组,即使它已经没有共享。“
摘自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/us/jEUH0.l