我总是[weak self]在快速关闭中使用以防止引用循环。这是下面的代码,这是正确的方法吗?
someTask(completion: {[weak self] (result) in
if self == nil {
return
}
//is it safe when reach here?
self!.xxx = yyy
self!.doLongTermWork()
self!.finish() //will crash when self is nil?
})
Run Code Online (Sandbox Code Playgroud)
弱自我不会对实例保持强大的控制。那么什么时候self.doLongTermWork(), 会self在nil其他地方再次设置?