내 응용 프로그램에서 모든 타이머를 중지하고 싶습니다. 문제는 내가 웹 서비스를 시작하는 타이머를 넣는다는 것입니다. 그리고 무효화를하더라도 ViewController를 닫으면 Timer가 여전히 활동 중입니다. _currentDate를 인쇄 할 때 실행중인 여러 currentDate가 있음을 알 수 있고 단 하나의 currentDate (레이블에서 선택한 것) 만 표시해야하기 때문에 매우 쉽게 문제가 있는지 확인할 수 있습니다.iOS : 신속한 활동 3의 모든 타이머를 무효화하거나 삭제하는 방법은 무엇입니까?
타이머의 reinit가 DispatchQueue.main.async에서 시작 되었기 때문일 수 있습니까? 어떻게 그걸 막을 수 있니? 내 문제를 다시 시작하려면
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