iOS应用程序中出现以下模式:
class MyViewController: UIViewController {
let myModel = MyModel()
override func viewDidLoad() {
super.viewDidLoad()
myModel.foo() { [***] in
// use self here
}
}
}
class MyModel {
public func foo(complete: () -> Void) {
// do something
complete()
}
}
共识是使用其中之一 [unowned self]
要么 [weak self]
代替 [***]
当你可以保证在完成时自我不会为零而且在你不确定引用仍然有效时会很弱的情况下,这是无主的。
我不明白为什么我会冒险使用无主,也许我确信现在参考永远不会是零,但这可能在未来发生变化。我也可能忽略了一个边缘案例,错误发生了。我可以很容易地总是使用弱,并在封闭的顶部放一个警卫,以便能够使用自己没有!要么 ?。
无主的用途是什么?它比弱+守卫更快吗?是语法糖吗?这似乎违背了Swift的保护开发人员免受可能导致崩溃的常见错误的理念。