[英]What's the difference between unshare() and copy()?
unshare()
和copy()
都用於復制數組,但我看不出差異。
如果已經沒有共享被調用方,則unshare()
將不執行任何操作。 copy()
無論如何都會復制它。
正如它在Apple文檔中所述, unshare
是為了確保數組的副本是唯一的 ,因此當您調用unshare
時,您將獲得該數組的非共享副本,如果這是該數組的唯一引用,則該數組可能是相同的數組。
另一方面, copy
強制數組的副本並返回包含復制項的新數組 。
因此,如果您希望擁有2個獨立的陣列副本,則應該使用其他情況下的copy
,您可以使用unsare
來確保該陣列沒有其他引用。
這已經改變了Beta 3. unshare()和copy()都已從Array中刪除。 數組現在是copy-on-write,其默認行為與調用unshare()非常相似。
從文檔 :
如果您只需要確保對數組內容的引用是唯一存在的引用,請調用unshare方法,而不是copy方法。 除非有必要,否則unshare方法不會復制數組。 復制方法始終復制數組,即使它已經是非共享的。
基本上,如果它是唯一的參考,unshare將不會做任何事情。 復制將以任何方式執行。
根據Swift編程指南(第298頁):
“如果您只需要確保對數組內容的引用是唯一存在的引用,請調用unshare方法,而不是復制方法。 除非有必要,否則unshare方法不會復制數組。 復制方法總是復制數組,即使它已經是非共享的。“
摘錄自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/us/jEUH0.l
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.