在調用dismissViewControll之後,我一直使用協議和委託方法將數據傳遞迴前一個VC。下面就是我通常會做,因爲它是不是這樣,大多數教程編寫弱代理和類協議
protocol someVCDelegate {
func somefunction()
}
var delegate: someVCDelegate!
不過,我碰到寫它的這個類/弱的辦法。
protocol someVCDelegate : class {
func somefunction()
}
weak var delegate: someVCDelegate!
我明白,弱與ARC相關聯,並避免保留週期。但是,我不知道什麼時候我需要它,因爲在我所有的情況下,沒有做弱代理作品發現(VC確實不行)。在什麼情況下我需要弱代表?另外,它爲什麼是「!」弱後,通常是「?」後弱了吧?
你是否在任何時候讓代表零?或者前一個VC不保留對下一個VC的引用?我懷疑爲什麼在VC上調用deinit,如果一個對象至少有一個強引用它,ARC不會清理它。因此,如果前面的VC引用了下一個VC,並且下一個VC具有對之前的(強)委託引用,那麼ARC將不會刪除它們,如果它們失去所有其他引用導致內存泄漏 – Fonix
它始終是一種很好的做法,無論如何,它並不困難,並且可以爲您節省一些未來的麻煩。可能難以調試,如果它稍後成爲問題 – Fonix
今天剛剛閱讀。它爲我澄清了一些疏忽:ARC。 https://www.raywenderlich.com/134411/arc-memory-management-swift – Adrian