現在実行中かどうかを調べるためにタイマ機能を書いていますが、タイマ変数がゼロになっているようです。そのため、新しいタイマーインスタンスの作成が継続されます。swift 3タイマの実行を確認する
weak var myTimer: Timer?
// starting a timer
func startTimer(timer: Timer?, interval: Double, _selector: Selector, _repeats: Bool){
weak var _timer = timer
if (_timer == nil){
_timer = Timer.scheduledTimer(timeInterval: interval, target: self, selector: _selector, userInfo: nil, repeats: _repeats)
}
}
// stopping a timer
func stopTimer(timer: Timer?){
var _timer = timer
if (_timer != nil){
_timer!.invalidate()
_timer = nil
}
}
タイマーが開始された後も、どういうわけか
self.startTimer(timer: self.myTimer, interval: 0.1, _selector: #selector(self.updateTimer), _repeats: true)
を呼び出すことにより、タイマーを開始し、それはまだゼロです。したがって、関数が呼び出される2回目には、別のタイマーインスタンスがスケジュールされます。私がそれをやめようとすると、それはいつも無かったので成功しません。これをどうすれば解決できますか?
ありがとう
'_timer'変数はどちらもローカルスコープにあり、互いに関連していません。あなたは何を期待していますか? – vadian
スコープをチェックし、なぜ弱いのですか – zombie
弱いvarを使用しようとしました。 .isValidメソッドを使用しようとしましたが、これはnilであるため、これは機能しません。 –