在调用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