Медленный запуск 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 и проявлять настойчивость в отношении очистки их в условиях нехватки памяти?