在解开可选值错误时为 Nil



致命错误:解开可选值时意外发现 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不幸的是。

最新更新