私は自分のアプリですべてのタイマーを停止したいと思います。問題は、私がWebサービスを起動するタイマーを置くことです。たとえ無効化を行っても、ViewControllerを閉じるとTimerはまだアクティビティになっているようです。 _currentDateを印刷すると、いくつかのcurrentDateが起動されていることがわかり、currentDate(ラベル内で選択したもの)が1つしか表示されないため、非常に簡単に問題があることを確認できます。iOS:すばやく3時間以内にアクティビティ内のすべてのタイマーを無効化または強制終了する方法はありますか?
DispatchQueue.main.asyncからタイマーのreinitが起動されている可能性がありますか?それでどうやって止めることができますか?私の問題を再開する
fileprivate var _refreshTimer:Timer?
func reinitTimer()
{
stopTimer()
if _refreshTimer == nil {
_refreshTimer = Timer.scheduledTimer(timeInterval: TimeInterval(TIMER_PLANNING_REFRESH), target: self, selector: #selector(PlanningViewController.reloadDataTick(_:)), userInfo: nil, repeats: false)
}
}
func stopTimer()
{
if _refreshTimer != nil {
_refreshTimer!.invalidate()
_refreshTimer = nil
}
}
func reloadDataTick(_ timer:Timer)
{
// WebService launching with the current date that is choosen in a label with popover.
DAL.sharedInstance.getPlanningInformation(_currentDate) { (models, error) -> Void in
DispatchQueue.main.async {
if error == nil
{
...
self.reinitTimer()
}
}
}
は、reloadDataTick機能が停止したことがないとさえ無効で、私が選択したすべての日付で、毎回起動されます。
ああ完璧に!できます!! – Claudio