NSTimer重复随机阻止?

时间:2016-09-19 12:28:23

标签: ios swift xcode nstimer repeat

我得到以下代码每1秒重复一次方法,并且它正常工作:

var timer : NSTimer?

override func viewDidLoad() {
  super.viewDidLoad()
  self.timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(self.timerFired(_:)), userInfo: nil, repeats: true)
}

func timerFired (timer: NSTimer) {
  print ("timer fired")
}

问题

上面的代码可以正常工作,直到用户开始在兄弟视图控制器中滚动UIScrollView。在滚动定时器时立即触发'日志停止出现。一旦用户停止滚动并抬起手指,“定时器”就会被触发'日志恢复标记每秒。

注意: 我提到的UIScrollView和兄弟视图控制器与此或其他NSTimer无关。它没有任何关于这个类的参考。

尝试的事情:

我尝试在计时器安排后立即放置此行:

NSRunLoop.mainRunLoop().addTimer(self.timer!, forMode:NSDefaultRunLoopMode)

我还尝试确保所有计时器活动都在主线程上:

dispatch_async(dispatch_get_main_queue(),{
   self.timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(self.timerFired(_:)), userInfo: nil, repeats: true)
 })

我确实有其他线程正在运行,如果这似乎与线程相关,但我真的很困惑为什么这种情况在滚动时会发生。

0 个答案:

没有答案