簡體   English   中英

對於Swift單身人士,總是使用[無主自我]安全嗎?

[英]Safe to always use [unowned self] for Swift singletons?

由於共享單例實例將始終存在,我們是否可以在該單例類中的所有閉包中安全地使用[unowned self]

當然,這是安全的。 但這不是一個好理由。

是否使用弱引用或強引用應基於您正在編寫的函數中的內存管理特性。 例如,如果對象強烈引用閉包,則閉包應捕獲對象的弱引用; 這是安全的,因為沒有其他人有關閉的引用,所以它只能在主對象存活時執行等。如果沒有保留周期,並且閉包被賦予一個單獨的API,以便它不被綁定到主對象的生命周期,那么閉包應該對主對象有一個強引用。 這種推理同樣適用於單身人士和非單身人士。

是的,單身人士對自己有強烈的借鑒意義,不能被處置。

基於此可以肯定地說,您可以安全地創建對它的弱或無主引用。

來自Apple文件:

該類在第一次請求時延遲創建其唯一實例,然后確保不能創建其他實例。 單例類還可以防止調用者復制,保留或釋放實例。

測試它的簡單方法是從主類測試。

  • 創建一個新類(讓我們稱之為“第一類”),它使用一些值初始化單例並在完成一個唯一的作業后處理。
  • 之后在主類中創建另一個類(讓我們調用“第二類”),它檢索單例實例並讀取其值。

在第一個(處置的)類和第二個(新創建的)類之間沒有對單例的引用。

  • 現在讀取值,如果仍然存在值,則證明單例通過自己的引用保持活着。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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