簡體   English   中英

unshare()和copy()之間有什么區別?

[英]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()非常相似。

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

文檔

如果您只需要確保對數組內容的引用是唯一存在的引用,請調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM