[英]Timer doesn't stop on swift
現在我學習了 Timer(),我可以成功觸發它,但即使我調用 invalidate() 它也不會停止。我該如何解決這個問題? 我使用 Xcode 11.1。
我會展示一些代碼和日志。
這是 ContentView.swift,只需編輯即可獲得默認按鈕。 內容視圖.swift
import SwiftUI
struct ContentView: View {
var body: some View {
Button(action: {
// What to perform
let timerFire = TimerFire()
timerFire.FireTimer()
}) {
// How the button looks like
Text("Button")
}
}
}
這是 TimerFire.swift。 它確實定時器觸發,然后如果定時器計數達到 5,它應該停止定時器 TimerFire.swift
import Foundation
import UIKit
import SwiftUI
let TIME_MOVENEXT = 5
var timerCount : Int = 0
class TimerFire : ObservableObject{
var workingTimer = Timer()
@objc func FireTimer() {
print("FireTimer")
var workingTimer = Timer()
workingTimer = Timer.scheduledTimer(timeInterval: 1,
target: self,
selector: #selector(TimerFire.timerUpdate),
userInfo: nil,
repeats: true)
}
@objc func timerUpdate(timeCount: Int) {
timerCount += 1
let timerText = "timerCount:\(timerCount)"
print(timerText)
if timerCount == TIME_MOVENEXT {
print("timerCount == TIME_MOVENEXT")
workingTimer.invalidate() //here i call invalidate(), but it doesn't stop
print("workingTimer.invalidate()")
}
}
}
這是我運行此代碼的日志。 日志
timerCount:1
timerCount:2
timerCount:3
timerCount:4
timerCount:5
timerCount == TIME_MOVENEXT
workingTimer.invalidate()
timerCount:6
timerCount:7
調用workingTimer.invalidate() 后,定時器仍然有效。 有人可以幫助我嗎?
您正在FireTimer()
函數中創建另一個具有相同名稱的計時器實例,只需刪除並嘗試
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.