2017-04-11 33 views
0

我有我的財產獲得者引用self和我懷疑它會持有self並且永遠不會釋放它的情況的情況。請您解釋一下,如果我沒有在這種情況下犯錯誤嗎?我應該在變量中使用弱自我嗎?

private var storyboard: UIStoryboard { 
    get { 
     return UIStoryboard(name: "Login", bundle: Bundle(for: type(of:self))) 
    } 
} 
+0

屬性獲取器不是閉包,編譯器甚至不會讓你使用無主自我。 – dan

+0

計算出的屬性不過是一個榮耀的(一對)方法 - 沒有保留週期的問題。你測試過了嗎(即在'deinit'中放置一個'print')? – Hamish

+0

@Hamish是的,我有內存泄漏,與包含此屬性的類連接。 –

回答

2

你不是犯了一個錯誤 - 一個計算的屬性是不超過一個華而不實的方法/對的方法了。就其本身而言,沒有保留週期問題。

self只是調用計算屬性的getter或setter時傳遞的隱式參數,並且是該屬性被訪問的實例 - 它不會被屬性本身存儲或捕獲。