2010-12-30 18 views
0

AVAudioPlayer-iphonesdkのメモリリークを解決する方法ここに。私は私のコードを与える...メモリリークは、それを解決する方法について説明します。..私のコードである AVAudioPlayer-iphonesdkのメモリリークを解決する方法

.hファイル

AVAudioPlayer *titlescreenaud; 

.mファイル

titlescreenaud=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"TitleScreen_BgmAudio" ofType:@"mp3"]] error:NULL];//***Memory leaks on here......*** 
titlescreenaud.numberOfLoops=-1; 
[titlescreenaud play]; 

仕上げ音

 -(void)finish 
     { 
     [titlescreenaud stop]; 
     [titlescreenaud release]; 
     titlescreenaud=nil; 
     } 

avaudioplayerを解放するためにどのように私を助けてください.......

答えて

-1

ViewDidLoadでAVAudioPlayerオブジェクトを割り当てている場合は、問題が発生しません。しかし、反復的にメソッドを呼び出す場合、オブジェクトを割り当てた場合は、常に同じオブジェクトのメモリを割り当てることになります。メモリを解放する前に、retainCountを確認することができます。

+0

* '* retainCount'をチェックしません。 'retainCount'メソッドはデバッグにはほとんど役に立たず、本番用コードでは使用しないでください。 – bbum

+0

彼は手動でメモリを解放しているので、彼はそれを使うことができると思います。 autoreleaseを使用している場合、retaincountを使用するのは良いことではありません。私は右のbbumですか? – Raxit

+0

Nope; 'retainCount'を使うのは決していい考えです。オブジェクトの保持カウントは、フレームワーク内部実装の詳細です。それがフレームワークのオブジェクトであるか、フレームワークに渡されたオブジェクトである場合、保持カウントはまさに何でもあり、依然として有効です。 – bbum

0
titlescreenaud=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"TitleScreen_BgmAudio" ofType:@"mp3"]] error:NULL];//***Memory leaks on here......*** 

私はInstrumentsがメモリリークがあることを示していると想定しています。つまり、その行に割り当てられたものは解放されていないということです。実際のリークは他の場所にある可能性があります。おそらく、releaseがないためです。

finishメソッドは実際に呼び出されていますか? release​​をdeallocにしますか?

問題を具体的に特定できるほど十分なコードはありません。

関連する問題