このタイマーを停止し、停止した場所から再起動します。タイマーを停止して再起動する
secondsTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(addSeconds), userInfo: nil, repeats: true)
以下、それは私が私のタイマハンドラでタイマーをインクリメントべきではないことが示唆されました。何故なの? GCDタイマーを使用して例えば
、:
func countSeconds() {
secondsTimer = DispatchSource.makeTimerSource(queue: .main)
secondsTimer?.schedule(deadline: .now(), repeating: 1.0)
secondsTimer?.setEventHandler { [weak self] in
self?.addSeconds()
}
}
@objc func addSeconds() {
seconds += 1
}
func startGame() {
secondsTimer?.resume()
}
私はどこで停止して再開できる秒カウンタを作成できますか?ありがとうございました –
タイマーを開始するときに開始時刻( 'CACurrentMediaTime()'または 'CFAbsoluteTimeGetCurrent()')をキャプチャし、タイマーを一時停止するときに、 'CACurrentMediaTime()'または 'CFAbsoluteTimeGetCurrent保存された開始時刻。 – Rob
コードを教えてもらえませんか? –