メインスレッドではなく、スレッドに複数のタイマーを追加しようとしています。コードは次のとおりです。
- (IBAction)addTimer:(id)sender
{
if (!_timerQueue) {
_timerQueue = dispatch_queue_create("timer_queue", NULL);
}
dispatch_async(_timerQueue, ^{
NSTimer *tempTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:tempTimer forMode:NSRunLoopCommonModes];
[[NSRunLoop currentRunLoop] run];
});
}
上記の方法は、ボタンアクションによってトリガーされます。ただし、ディスパッチブロックのコードは、ボタンを何度クリックしても、1回だけ実行されます。したがって、そのスレッドには1つのタイマーしかありません。なんでだろう?