如果“自我”是ViewController,你应该几乎总是使用[弱自我]吗?

时间:2015-07-22 20:58:46

标签: ios swift oop memory-management memory-leaks

如果控制器展开并且“self”可以变为零,我一直在每个回调中使用[弱自我]。

这是正确的做法吗?

当我应该使用[unowned self]或者两者都没有时,有什么例子......假设“self”是一个经常被解除的ViewController?

1 个答案:

答案 0 :(得分:3)

如果有可能在self取消初始化后仍会调用回调,则使用[weak self]是正确的。使用[unowned self]的原因是,您知道在self消失后永远不会调用回调,但强烈捕获self会导致保留周期。

[unowned self]的一个例子是闭包的存在取决于self的存在,那么很明显,如果self消失,关闭将会也不见了,不会被召唤。