[iOS]NSTimer 不觸發事件的解決
阿新 • • 發佈:2019-02-09
1.建立NSTimer
使用scheduledTimerWithTimeInterval方法建立的NSTimer會以預設方式加入當前NSRunLoop中
使用 timerWithTimeInterval initWithFireDate 建立需要手動加入一個NSRunLoop中
scheduledTimerWithTimeInterval:invocation:repeats: scheduledTimerWithTimeInterval:target:selector:userInfo:repeats: timerWithTimeInterval:invocation:repeats: timerWithTimeInterval:target:selector:userInfo:repeats: initWithFireDate:interval:target:selector:userInfo:repeats:
2 使用NSTimer
//建立計時器,計時器建立後會自動開始計時
let timer = NSTimer.scheduledTimerWithTimeInterval(timeInterval, target: self, selector: Selector("onTimer:"), userInfo: nil, repeats: true)
timer.fire() //觸發onTimer事件,本次觸發不影響計時器計時
timer.invalidate() //停止計時器
在其他執行緒建立計時器時,不觸發onTimer,需要在主執行緒中建立
dispatch_sync(dispatch_get_main_queue(), { () -> Void in NSTimer.scheduledTimerWithTimeInterval(timeInterval, target: self, selector: Selector("onTimer:"), userInfo: nil, repeats: true) })