1. 程式人生 > >[iOS]NSTimer 不觸發事件的解決

[iOS]NSTimer 不觸發事件的解決

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)
    })