【问题标题】:is it possilbe to stop the NSTimer before it reach the specified time?是否可以在定时器到达指定时间之前停止它?
【发布时间】:2020-08-12 17:48:20
【问题描述】:

我正在使用带有repeats: false 的计时器,所以它会运行一次,在达到我想停止执行计时器的时间延迟之前运行一次。

    timer?.invalidate()
    timer = nil 
    //is not working

下面的代码 sn-p 是我尝试过的示例

  var timer : Timer?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        timer = Timer()
    }

    @IBAction func startAction(_ sender: Any) {
        timer = Timer.scheduledTimer(withTimeInterval: 10.0, repeats: false, block: { (make) in
            print("ack did")
        })
        
    }
    
    @IBAction func cancelAction(_ sender: Any) {
        timer?.invalidate()
    }

所以首先我点击开始,所以计时器启动并等待指定的 10 秒, 我希望当用户点击取消时停止执行。在此先感谢:)

【问题讨论】:

    标签: ios swift nstimer


    【解决方案1】:

    是的,这是可能的,您甚至已经展示了停止计时器的代码。您发布的内容将起作用。

    注意这一行

        timer = Timer()
    

    在您的viewDidLoad() 中毫无意义。不要仅仅为了让你的变量不为空而创建一次性计时器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 2013-01-19
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多