Je suis nouveau à l'utilisation de avadioplayer et je semble avoir une mémoire quand je joue un son. Je n'arrive pas à comprendre ce qui me manque pour m'en débarrasser à l'intérieur d'Instrument. cela pourrait-il être un faux positif?Programmation de l'iPhone: avaudioplayer fuit la mémoire sur le jeu
ViewController.h:
@interface ISpectatorViewController : UIViewController <UIAccelerometerDelegate>{
AVAudioPlayer *massCheerSoundID;
}
@property(nonatomic,retain) AVAudioPlayer * massCheerSoundID;
// ViewController.m
- (void)viewDidLoad {
NSString * filePath;
filePath = [[NSBundle mainBundle] pathForResource:@"massCheer" ofType:@"mp3"];
massCheerSoundID = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:filePath ]error:nil];
}
- (void) playSound
{
if(massCheerSoundID.playing == false)
{
massCheerSoundID.currentTime = 0.0;
//leak here
[massCheerSoundID play];
}
}
- (void)dealloc {
[super dealloc];
[massCheerSoundID release];
}
Je trouve ce que le problème est.
I pour ajouter le got de AVAudioPlayerDelegate sur l'interface depuis que je me suis fixé le UIAccelerometerDelegate à la place
@interface iSpectatorViewController: UIViewController<AVAudioPlayerDelegate>
et définissez le
massCheerSoundId.delegate = self
Cela ne résout pas le problème. Il a toujours la même fuite à - [AVAudioPlayer play] dans Instruments. pourquoi la méthode à jouer le cause-t-elle? ça ne me semble pas juste. –
J'espère aussi que je ne lis pas l'instrument faux aussi. il a seulement montré cette fuite de temps en temps seulement si j'utilise la méthode de playsound. –