NSTimerが繰り返さない
NSTimerを勉強中なのですが、下記のような流れを試しています。
タイマ開始→タイマがタイムアウト→タイムアウトしたらタイマを開始→…とめるまで続く
(今回はrepeats: trueとしないで繰り返そうとしています)
class TimerTest: NSObject {
private ver testTimer: NSTimer!
~~省略
func startTimer() {
NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "testTimerTimeOut", userInfo: nil, repeats: false)
}
func testTimerTimeOut() {
dispatch_barrier_async(dispatch_get_global_que(DISPATCH_QUEUE_PRIORITY_HIGH, 0), {
self.startTimer()
})
}
}
別のクラスからstartTimer()を呼ぶことで、testTimerTimeOutが呼ばれることは確認できました。
その後、testTimerTimeOut内のstartTimerが再度呼ばれることまではブレイクを張って確認できたのですが、
以降、testTimerTimeOut()が呼ばれることはありませんでした。
GCD勉強中のため処理をtestTimerTimeOut()処理内でdispatch_barrier_asyncを使用しているのですが、
とくにそのほかでDISPATCH_QUEUE_PRIORITY_HIGHのタスクは使用していません。
これが悪いのか…と思い、タスク処理の外に出したところ、タイマは繰り返し、起動→タイムアウト→…を繰り返してくれました。
func testTimerTimeOut() {
dispatch_barrier_async(dispatch_get_global_que(DISPATCH_QUEUE_PRIORITY_HIGH, 0), {
// self.startTimer()
})
self.startTimer()
}
NSTimer()はタスク内で呼ぶことはできないのでしょうか。