У меня есть библиотека из 16 коротких аудиоклипов, которые мне нужно играть в быстрой последовательности. Я понял, что создание и подготовка AVAudioPlayer
объектов в режиме реального времени было слишком большим вопросом для iPhone.
Итак, вместо этого, во время инициализации моего приложения, я предварительно создаю серию AVAudioPlayers
, так что каждый из них в основном предварительно загружен одним из моих 16 звуков, поэтому они готовы для воспроизведения в любое время.
Проблема в том, чтобы сохранить это в чистоте, я хотел бы хранить ссылки для этих 16 AVAudioPlayers
в NSMutableArray
, чтобы я мог легко получить их, просто зная расположение их массива. Однако, как я это делаю, это сбой симулятора без сообщений об ошибках в журнале:
Вот как я сейчас настраиваю массив ссылок AVAudioPlayer
:
// (soundPlayers is an NSMutableArray instance var)
soundPlayers = [NSMutableArray arrayWithCapacity:(NSUInteger)16];
for ( int i = 0; i < 16; i++ ) {
NSString *soundName = [NSString stringWithFormat:@"sound-%d", i];
NSString *soundPath = [[NSBundle mainBundle] pathForResource:soundName ofType:@"mp3"];
NSURL *soundFile = [[NSURL alloc] initFileURLWithPath:soundPath];
AVAudioPlayer *p = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFile error:nil];
[soundFile release];
[p prepareToPlay];
[soundPlayers addObject:(id)p];
[p release];
}
Затем позже я пытаюсь загрузить, скажем, звук # 8 и воспроизвести его:
// (soundPlayer is an AVAudioPlayer instance var)
self.soundPlayer = [soundPlayers objectAtIndex:(NSUInteger)8];
[soundPlayer play];
Есть идеи? Также кто-нибудь знает, будут ли полезны какие-либо изящные средства отладки, которые поставляются с XCode, для решения подобных проблем?