私はiPhone 3.1.3アプリを開発しています。AVAudioRecorderのメモリリーク
I viewDidLoad
方法で次のコードを持っている:
if (recorder == nil)
recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];
私は移動:
NSURL *url = [NSURL fileURLWithPath:@"/dev/null"];
NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithFloat: 44100.0], AVSampleRateKey,
[NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
[NSNumber numberWithInt: 2], AVNumberOfChannelsKey,
[NSNumber numberWithInt: AVAudioQualityMax], AVEncoderAudioQualityKey,
nil];
NSError *error;
if (recorder == nil)
recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];
if (recorder) {
[recorder prepareToRecord];
recorder.meteringEnabled = YES;
[recorder record];
levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.03
target: self
selector: @selector(levelTimerCallback:)
userInfo: nil
repeats: YES];
注:recorder
は前viewDidLoad
でこのコードを使用して新しいものを作成し作成されている場合、私がチェックこのViewControllerから別のViewControllerに私はこれを行う:
[levelTimer invalidate];
levelTimer = nil;
[recorder pause];
そして最後に、私はdealloc
にrecorder
をリリース:
- (void)dealloc {
if (recorder != nil) {
[recorder release];
}
}
、リークを探して、私はAVAudioRecorder
でリークを取得しています。
プログラムは、この最初のViewControllerから2番目のViewControllerに移動します。そして、ユーザーが望むときは、2番目のViewControllerから最初のViewControllerに移動し、追加した最初のコードが実行されます。
メモリに問題はありますか?あなたはこれを行うより良い方法を知っていますか?私は、ユーザーが第2のviewControllerにいる間に録画を避けたい。
私はdeallocでリリースしています。 – VansFannel
私の質問を詳細で更新しました。私は新しいものを作成するためにレコーダー== nilかどうかをチェックするので、私はすべてのビューのリロードで1つを作成しているとは思わない。 – VansFannel