怎么检查没有通过

时间:2018-03-16 21:59:03

标签: swift

我不明白这个if语句作为计时器执行的是nil

        if timer != nil
        {
            logInfo("Cancelling notification for op=\(op), count=\(self.retryWindow.count)")
            timer!.invalidate()

enter image description here

2 个答案:

答案 0 :(得分:1)

多线程是一个可能的原因。在您的if声明与您对invalidate的通话之间,timer可能已在另一个主题上设为nil

请勿核对nil。安全地打开包装。

if let timer = timer {
    timer.invalidate()
}

答案 1 :(得分:0)

最简单的方法是使用魔法选项的强大功能..没有if letguard ..因为你的计时器已经是一个可选项,所以在一个可选项之上调用方法,以及所有方法应该由编译器自动处理。

timer?.invalidate()
timer = nil

如果存在invalidate,它将会调用方法timer