2017-09-07 11 views
3

私は自分のアプリですべてのタイマーを停止したいと思います。問題は、私が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機能が停止したことがないとさえ無効で、私が選択したすべての日付で、毎回起動されます。

答えて

関連する問題