Мне нужно было реализовать воспроизведение .aiff звука 3 раза подряд. Длина звука составляет 0,1 мс, а интервалы между воспроизведением также должны составлять 0,1 мс. Поэтому я решил сделать это с NSTimer. Это мое решение:
-(void)playSound{
timerCounter = 0;
timerForSound = [NSTimer scheduledTimerWithTimeInterval:0.2
target:self
selector:@selector(playSoundThreeTimes)
userInfo:nil
repeats:YES];
}
-(void)playSoundThreeTimes{
// play alert sound
AudioServicesPlaySystemSound(beepSound);
timerCounter++;
if(timerCounter == 3){ // sound played 3 times
[timerForSound invalidate];
timerCounter = 0;
}
}
Проблема в том, что звук иногда отстает, даже если я установил интервал 0,25 (0,2 - потому что длина звука + интервал = 0,2).
Может кто-нибудь предложить лучший способ сделать это или сказать, чем может быть вызвана проблема.
Артем
Редактировать: Добавление этого в асинхронный поток также не работает:
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[self playSound];
});