如果 "self" 是 ViewController,你应该几乎总是使用 [weak self] 吗?

If "self" is the ViewController, should you almost always use [weak self]?

我一直在每个回调中使用 [weak self],以防控制器展开并且 "self" 变为 nil。

这是正确的方法吗?

有哪些我应该使用 [unowned self] 或两者都不使用的例子...假设 "self" 是一个 ViewController 并且会经常放松?

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

[unowned self] 的一个例子是闭包的存在依赖于 self 的存在,那么很明显,如果 self 消失了,闭包也会消失也不会被调用。