如果 "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
消失了,闭包也会消失也不会被调用。
我一直在每个回调中使用 [weak self],以防控制器展开并且 "self" 变为 nil。
这是正确的方法吗?
有哪些我应该使用 [unowned self] 或两者都不使用的例子...假设 "self" 是一个 ViewController 并且会经常放松?
如果在self
被取消初始化后回调仍然会被调用,那么使用[weak self]
是正确的。使用 [unowned self]
的原因是您知道在 self
消失后永远不会调用回调,但强烈捕获 self
会导致保留周期。
[unowned self]
的一个例子是闭包的存在依赖于 self
的存在,那么很明显,如果 self
消失了,闭包也会消失也不会被调用。