致命错误:解开可选值时意外发现 nil
使用以下代码:
weak var previewBlurView : UIVisualEffectView?
func blurPreviewWindow() {
if (self.previewBlurView == nil) {
var blurEffect: UIVisualEffect
blurEffect = UIBlurEffect.init(style: UIBlurEffectStyle.Dark)
self.previewBlurView? = UIVisualEffectView(effect: blurEffect)
self.previewView.addSubview(self.previewBlurView?)
self.previewBlurView!.frame = self.previewView.bounds
}
self.previewBlurView?.alpha = 0.0
UIView.animateWithDuration(0.2, delay: 0.0, options: [.BeginFromCurrentState, .CurveEaseOut], animations: {() -> Void in
self.previewBlurView?.alpha = 1.0
}, completion: { _ in })
}
我在线崩溃:
self.previewView.addSubview(self.previewBlurView?)
注意
事实证明,由于视图控制器的实例未引用正确的实例的外部问题,所有视图都为零。 所以在这种情况下,self.previewBlurView结果为零。
删除self.previewBlurView
赋值中的?
:
self.previewBlurView = UIVisualEffectView(effect: blurEffect)
否则,任务只会发生在self.previewBlurView
实际上在开始时不nil
时才发生,这不是因为您正在为其分配某些内容。
比较以下内容:
var a : Int? = 12
a? = 13
print(a)
var b : Int?
b? = 13
print(b)
哪些打印
可选(13)
零
仅当b
没有nil
时才会发生分配b? = 13
不幸的是。