是否可以在达到指定时间之前停止计时器?

is it possilbe to stop the NSTimer before it reach the specified time?

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

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

下面的代码片段是我试过的示例

  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 秒, 我希望当用户点击取消时停止执行。提前致谢:)

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

注意行

    timer = Timer()

在您的 viewDidLoad() 中毫无意义。不要创建一个 throw-away 计时器只是为了让你的变量 non-null