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

Rom*_*man 7 arrays swift

两个unshare()copy()用于复制数组,但我不能看到的差别.

pco*_*ion 4

取消分享

正如苹果文档 中所述unshare,是为了确保数组的副本是唯一的,因此当您调用时,unshare您将获得数组的非共享副本,如果这是对该数组的唯一引用,那么它可能是同一个数组。

复制

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

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

  • 好吧,使用“copy”,您将获得数组的一个新副本,与原始源不同,并且如果您修改该副本,则源不会被修改。使用“unshare”,如果有更多对该数组的引用,您可以获得一个新副本,但如果这是唯一的引用,则保留相同的引用,因此在“unshare”的情况下,如果没有其他副本,您将修改原始数组,因为不会完成任何复制...我希望现在更清楚了... (2认同)
  • 另请注意,“unshare”对接收器进行操作,对其进行适当的修改。另一方面,“copy”返回一个新数组。这意味着,除其他外,不能对常量调用“unshare”,而“copy”可以。 (2认同)