2012-02-24 5 views
0

私はsoundboardアプリを作ってるんだと私はmp3ファイルを再生するには、このコードを使用します。再生前にAVAudioPlayerが解放されていますか?

-(IBAction)playSound 
{ 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"mysound" ofType:@"mp3"]; 
    AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
    theAudio.delegate=self; 
    [theAudio play]; 
    [theAudio release]; 
} 

私は音が再生されない[theAudio release];を含む場合。私はそれを取る場合は再生が、私はメモリリークを持ってしたくないです。これをどうすれば解決できますか?

追加が必要なコードを含めることができれば非常に役に立ちます。私はObjective-Cに慣れていないので、(私は学校で使ってきたTrueBasicに加えて)プログラミングに慣れていません。

答えて

0

オーディオを解放するために代理人経由でオーディオが終了するまで待ちます。私はあなたが検索した場合、サイト上に正確にこれのような数の投稿があると信じて、彼らは特定のデリゲートコードを持っています。

0

これは、ローカル変数を使用しているためです。 theAudioはすぐにリリースされます。 これをクラスメンバーとして定義し、ここに割り当てる必要があります。この機能が終了すると、それでも機能します。

+1

そして、このサンプルをたくさん持っているのは悲しいことですが、このミスも間違っています。 – Jonathan

関連する問題