ユーザーがテーブルをスクロールすることによって NSTimer が遅延するのを防ぐにはどうすればよいですか?
私は答えを見つけました:
0.4 ~ 0.8 秒間隔で約 8 ~ 9 回繰り返すタイマーがありました。あまり精度は必要ありませんが、ユーザーがテーブルをスクロールすると、テーブルのスクロールが完了するまでタイマーが動作しなくなります (これは数秒かかる可能性があります!)。バックグラウンド スレッドが必要だと思っていましたが、バックグラウンド スレッドのタイマーは実装がやや複雑でした。
私の問題に対する答えは非常にシンプルで簡単でした。タイマーを呼び出した後、次の行を追加するだけです。
//////////// start the timer
self.playingTimer = [NSTimer scheduledTimerWithTimeInterval:tempo target:self selector:@selector(playSoundFromArray:) userInfo:nil repeats:YES];
//////////// the magic line:
[[NSRunLoop currentRunLoop] addTimer:self.playingTimer forMode:UITrackingRunLoopMode];
これで、テーブルを好きなだけスクロールでき、タイマーも正常に動作します!!!
今、もう少し NSRunLoop を勉強する必要があります...