2010-12-28 9 views
1

iPhoneプログラミングを始めています。ボタンを押すと音が鳴る小さなテストアプリを作ろうとしています。この質問はかなりいいですね。かなり私はメモリ状況をどのように処理するかを理解しようとしています。メモリの問題を避けるために、作成したインスタンスはどこから解放するのですか?今すぐボタンを複数回クリックすると、アプリがクラッシュします。私はviewDidLoadのすべてを宣言し、deallocメソッドにリリースを入れようとしましたが、この設計では、サウンド全体が再生されてからサウンドを再現するまで待たなければなりません。私は演奏されている音の途中でボタンを押して、それが意味をなすなら "中断"できるようにしたい。サウンドが再生されているメモリ管理ヘルプ - iPhoneプログラミングv

そのボタンを押したときに、このメソッドが呼び出されている今、書かれており、音が、これはそれがで私が「中断」することができるように既に再生中のサウンドを作品設定で

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

を果たしている方法もう一度ボタンを押すと音が鳴ります。しかし、すぐにそれを押すと、アプリケーションがクラッシュします。そのような

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

か何かを:あなたはそうのようなメソッドを終了する前に、あなたはすぐに解放する必要があります

答えて

0

ローカル変数を/ initに割り当てるとき、保持カウント+1を割り当てるためです。しかし、メソッドを終了すると、そのvarへの参照はまだ生きていて、アクセスすることはできません。これはメモリリークを引き起こします。まずはMemory Managementから試してみてください。がんばろう。

関連する問題