Swift-weak & unowned

Swift-weak & unowned

感謝喵神的《100個Swift開發必備 Tip》內容參考自 “Tip46 內存管理,weak和unowned”

weak

  • weak在引用的內容被釋放後,標記爲weak的成員將會自動變成nil(因此被標記爲@weak的變量一定是Optional值)

unowned

  • unowned像OC裏面的 unsafe_unretained,unowned設置以後 即使它原來引用的內容已經被釋放了,它仍然會保持對被已經釋放的對象一個“無效的”引用,它不能是Optional值,也不會被指向nil。如果你嘗試調用這個引用的方法或者成員屬性時,就會崩潰。

如何選擇?

  • 如果能夠確定在訪問時不會已經被釋放的話,就儘量使用unowned
  • 如果存在被釋放的可能,就選擇weak
發佈了109 篇原創文章 · 獲贊 63 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章