我为幻灯片菜单控制器定义了一个类。所以我有这样的代码:
open override func closeLeft() {
guard let _ = leftViewController else { // If leftViewController is nil, then return
return
}
self.delegate?.leftWillClose?()
leftViewController?.beginAppearanceTransition(isLeftHidden(), animated: true)
closeLeftWithVelocity(0.0)
setCloseWindowLevel()
}
如何解决此警告?
答案 0 :(得分:2)
可选绑定的重点是获取可以安全使用的原始可选对象的安全解包副本,即使原始对象也可以被其他线程修改。因此,不要丢弃安全解包的值,稍后使用该值而不是对可选值进行可选链接。
open override func closeLeft(){
guard let leftVC = leftViewController else { return }
self.delegate?.leftWillClose?()
leftVC.beginAppearanceTransition(isLeftHidden(), animated: true)
closeLeftWithVelocity(0.0)
setCloseWindowLevel()
}
答案 1 :(得分:1)
不要丢弃可选绑定的值,使用它!
而不是测试nil
然后选择后续链接
open override func closeLeft() {
guard let _ = leftViewController else { return }
// ...
leftViewController?.beginAppearanceTransition(isLeftHidden(), animated: true)
// ...
}
将展开的值分配给局部变量并使用它:
open override func closeLeft() {
guard let leftVC = leftViewController else { return }
// ...
leftVC.beginAppearanceTransition(isLeftHidden(), animated: true)
// ...
}
这更简单,因为leftViewController
只被解包一次,
不是两次。