Ios 无法为swift 2中的NSTimer变量设置NIL值

Ios 无法为swift 2中的NSTimer变量设置NIL值,ios,swift,nstimer,Ios,Swift,Nstimer,我正在寻找一种方法,为swift 2中的NSTimer变量指定一个nil值。我正在使用它的秒表应用程序 var timer = NSTimer() @IBAction func stop(sender: AnyObject) { timer.invalidate() timer = nil 我发现了错误 无法将Nil分配给NSTimer类型 无法设置它,因为计时器不是可选变量。为了能够设置为零,您必须这样做 var timer:NSTi

我正在寻找一种方法,为swift 2中的NSTimer变量指定一个nil值。我正在使用它的秒表应用程序

var timer = NSTimer()    

@IBAction func stop(sender: AnyObject) {
            timer.invalidate()
            timer = nil
我发现了错误

无法将Nil分配给NSTimer类型


无法设置它,因为计时器不是可选变量。为了能够设置为零,您必须这样做

var timer:NSTimer? = NSTimer()    

    @IBAction func stop(sender: AnyObject) 
    {
      if let aTimer = timer {
         aTimer.invalidate()
         timer = nil
      } else {
        //no timer to stop. Make sure you have a valid timer created
      } 
    }
Swift 4.x

声明您的计时器如下:

var timer: NSTimer? = NSTimer()

正如在其他答案和评论中提到的,不可能将非可选变量设置为nil。这是Swift的基本概念之一

NSTimer变量应该是可选的,启动和停止计时器最可靠的方法是

var timer : NSTimer?

func startTimer()
{
   if timer == nil {
      timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: aSelector, userInfo: nil, repeats: true) 
   }
}

func stopTimer()
{
   if timer != nil {
      timer!.invalidate() 
      timer = nil
   }
}

它总是检查计时器的状态。

不工作。展开后出现此错误。致命错误:在展开可选值时意外发现nil。将其设置为nil后是否强制展开计时器?呼叫计时器!如果计时器为零,将导致此崩溃。我必须查看更多代码来帮助您。将其设置为可选NSTimer,将迫使我强制展开它。timer=NSTimer.scheduledTimerWithTimeInterval0.01,target:self,selector:aSelector,userInfo:nil,repeats:true startTime=NSDate.timeintervalnceReferenceDate您可以在此处阅读有关选项的更多信息。您应该避免强制展开。试着写定时器?而不是计时器!。不起作用。展开后出现此错误。致命错误:在展开可选值时意外发现nil默认初始值设定项NSTimer不执行任何操作。你从哪里开始计时?对投反对票的人说:为什么投反对票?这是一个有效的问题,如何将其设置为零没有答案。“这太荒谬了!”瓦迪安:我在课堂上初始化计时器,然后在按下按钮后启动它。timer=NSTimer.scheduledTimerWithTimeInterval0.01,目标:self,选择器:aSelector,userInfo:nil,repeats:true startTime=NSDate.timeIntervalSinceReferenceDate
var timer: NSTimer? = NSTimer()
var timer : NSTimer?

func startTimer()
{
   if timer == nil {
      timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: aSelector, userInfo: nil, repeats: true) 
   }
}

func stopTimer()
{
   if timer != nil {
      timer!.invalidate() 
      timer = nil
   }
}