J'ai une bibliothèque de 16 clips sonores courts que je dois pouvoir jouer rapidement. J'ai réalisé que créer et préparer des objets en temps réel était trop demander à l'iPhone. Par conséquent, lors de l'initialisation de mon application, je crée une série de AVAudioPlayers
afin que chacun soit pré-chargé avec l'un de mes 16 sons, afin qu'ils soient prêts à être joués à tout moment. Le problème est, pour garder cela propre, je voudrais stocker les références pour ces 16 AVAudioPlayers
dans un NSMutableArray
, donc je peux facilement y accéder simplement en connaissant leur emplacement de tableau. Cependant, la façon dont je le fais le simulateur se bloque w/aucun message d'erreur dans le journal:Puis-je stocker des références AVAudioPlayer dans un NSMutableArray et les lire à volonté?
Voici comment je actuellement à l'installation tableau de AVAudioPlayer
références:
// (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];
}
Puis, plus tard J'essaie de charger, disons, le son n ° 8 et de le lire:
// (soundPlayer is an AVAudioPlayer instance var)
self.soundPlayer = [soundPlayers objectAtIndex:(NSUInteger)8];
[soundPlayer play];
Des idées? Est-ce que quelqu'un sait si l'un des outils de débogage fournis avec XCode serait utile pour ce type de problème?
Il est hors sujet, mais vous n'avez pas besoin la distribution dans '(id) p 'et' (NSUInteger) 16'. Et s'il vous plaît chercher le journal des accidents.N'y a-t-il vraiment rien affiché dans la console du débogueur? Cela ne m'est jamais arrivé. – Yuji
Merci! Très utile. – todd412