1

メインスレッドではなく、スレッドに複数のタイマーを追加しようとしています。コードは次のとおりです。

- (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つのタイマーしかありません。なんでだろう?

4

1 に答える 1