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

Я пытаюсь устранить задержку запуска при воспроизведении (очень короткого - менее 2 секунд) аудиофайла через AVAudioPlayer на iPhone.

Сначала код:

NSString *audioFile = [NSString stringWithFormat:@"%@/%@.caf", [[NSBundle mainBundle] resourcePath], @"audiofile"];
NSData *audioData = [NSData dataWithContentsOfMappedFile:audioFile];

NSError *err;
AVAudioPlayer *audioPlayer = [(AVAudioPlayer*)[AVAudioPlayer alloc] initWithData:audioData error:&err];

audioPlayer.delegate = self;
[audioPlayer play];

Я также реализую метод audioPlayerDidFinishPlaying, чтобы выпустить AVAudioPlayer, как только я закончу.

При первом воспроизведении звука задержка ощутима - не менее 2 секунд. Однако после этого звук воспроизводится сразу. Я подозреваю, что виновником, таким образом, является [NSData dataWithContentsOfMappedFile], который вначале долго считывает данные с флэш-памяти, но затем быстро выполняет последующие операции чтения. Я не уверен, как это проверить, хотя.

Это тот случай? Если так, должен ли я просто предварительно кэшировать объекты NSData и проявлять настойчивость в отношении очистки их в условиях нехватки памяти?

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

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