如果我的viewcontroller必须使用委托进行初始化,那么使用unowned是否有任何危险呢?
使用弱似乎会引入函数失败的概率(见下文),尽管它不会崩溃.
在这种情况下使用无主的是否会不安全?
class MyViewController: UIViewController
private weak var delegate: MyViewControllerDelegate?
init(delegate: MyViewControllerDelegat) {
self.delegate = delegate
}
func foobar {
delegate??
}
Run Code Online (Sandbox Code Playgroud)
相比
class MyViewController: UIViewController
private unowned var delegate: MyViewControllerDelegate
init(delegate: MyViewControllerDelegate) {
self.delegate = delegate
}
func foobar {
delegate.doAction()
}
Run Code Online (Sandbox Code Playgroud)
如果您的控制器必须使用委托进行初始化,并且控制器在没有它的情况下无法工作,那么这unowned是正确的解决方案。但是,您必须确保在控制器被释放之前,委托永远不会被释放。通常,委托人应该是控制器的所有者。
不过,使用起来weak也不复杂:
delegate?.doAction()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
478 次 |
| 最近记录: |