Jouer un son
JonathanSiboni
Membre
Bonjour, je poste ce message car je veut jouer un son , et j'ai une erreur quelque part car le son ne se joue pas ..
voila mon code
header .m
header .h
aussi , je ne sais pas si ca a des rapport , mais dans la console quand je lance l'application , j'ai
ca qui s'affiche :
le nom de mon fichier mp3 est "2502.mp3".
J'utilise un storyboard , j'ai Xcode 4.6 et le SDK 6.1 .
Merci de votre aide !!
voila mon code
header .m
<br />
-(IBAction)do1 {<br />
<br />
NSString *path = [[NSBundle mainBundle] pathForResource:@"2502" ofType:@"mp3"];<br />
<br />
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];<br />
[audioPlayer play];<br />
<br />
<br />
}<br />
header .h
<br />
#import <UIKit/UIKit.h><br />
#import <AVFoundation/AVFoundation.h><br />
@interface Menu : UIViewController <AVAudioPlayerDelegate> {<br />
<br />
}<br />
<br />
-(IBAction)do1; <br />
aussi , je ne sais pas si ca a des rapport , mais dans la console quand je lance l'application , j'ai
ca qui s'affiche :
<br />
Appli[1457:907] Unknown class M in Interface Builder file.<br />
le nom de mon fichier mp3 est "2502.mp3".
J'utilise un storyboard , j'ai Xcode 4.6 et le SDK 6.1 .
Merci de votre aide !!
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
C'est bon j'ai donc rajouté comme dit m'a dit
et ca marche , merci beaucoup !
et pourquoi sans cette proprieté ca ne marchait pas ?
En bref, il est détruit à la sortie de la méthode "dol", ce qui fait que la méthode "play" (qui lance la lecture mais bien sûr de manière asynchrone et non bloquante) n'a à peine le temps de jouer 1ms du son avant la destruction du player.
Alors que si tu gardes une property(strong), le player reste en vie tant que tu ne remets pas cette propriété à nil (ou que ton objet "Menu" n'est pas lui-même détruit) donc il a le temps de jouer le son.
Si l'audio player n'est pas référencé fortement il est détruit par ARC.
Avec ARC il faut prendre l'habitude de créer des propriétés strong pour les objets qui doivent perdurer "un certain temps". C'est la façon la plus simple de garder une référence forte.
(j'aimerais bien voir la myriade de doigts sur la quantité de mains d'Ali, un jour)