, Например:

роблема обнаружилась в нескольких других вопросах здесь на SO:

Медленный запуск AVAudioPlayer при первом воспроизведении звука

Задержка воспроизведения звуков с помощью AVAudioPlayer

Я пытался реализовать предложенные исправления, но ни одно из них не решило мою проблему. Мое приложение предоставляет пользователю сетку объектов, к которым нужно прикоснуться, при прикосновении к объекту воспроизводится звук. Это прекрасно работает, за исключением того, что при первом касании задержка составляет ~ 2 секунды.

Чтобы обойти это, я инициализирую свой аудиоплеер с помощью фиктивного файла aiff:

- (void)viewDidLoad{
    NSString *soundFile = [Card loadCardSoundPath:@"dummy"];

    AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:
                             [NSURL fileURLWithPath:soundFile] error:nil];
    self.audioPlayer = player;
    [audioPlayer setDelegate:self];
    [audioPlayer prepareToPlay];
//    [audioPlayer play];
    [player release];
...
[super viewDidLoad]; 
}

Затем при касании объекта я звоню:

NSString *soundFile = [Card loadCardSoundPath:name];

if (soundFile != nil){

            AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:
                                     [NSURL fileURLWithPath:soundFile] error:nil];
            self.audioPlayer = player;
            [self.audioPlayer setDelegate:self];
            [self.audioPlayer prepareToPlay];
            [self.audioPlayer play];
            [player release]; 
}

Поведение, которое я наблюдаю, таково: я наблюдаю задержку звука, когда я щелкаю первый объект, если я создаю фиктивный аудиоплеер и вызываю prepareToPlay, но не играю. Однако, если я вызываю play на фиктивном аудиоплеере, тогда я не получаю задержку на начальном объекте, но загрузка просмотра задерживается на 2 секунды.

Есть ли способ обойти это? Должен ли я просто создать NSArray из AVAudioPlayers при загрузке и сказать им всем, что нужно подготовиться к игре, а затем просто вызвать play, когда объект щелкают?

Ответы на вопрос(1)

Ваш ответ на вопрос