我正在開發一個iPhone 3.1.3應用程序。AVAudioRecorder內存泄漏
我在viewDidLoad
方法如下代碼:
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
一個新的與此代碼:
if (recorder == nil)
recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];
當我移動從這個ViewController到另一個ViewController我這樣做:
[levelTimer invalidate];
levelTimer = nil;
[recorder pause];
最後,我釋放recorder
上dealloc
:
- (void)dealloc {
if (recorder != nil) {
[recorder release];
}
}
與「與性能工具運行」的Xcode選項來運行它,尋找泄漏,我越來越泄漏與AVAudioRecorder
。
程序將從此第一個ViewController轉到第二個ViewController。然後,當用戶需要時,它將從第二個ViewController到第一個ViewController,它將運行我添加的第一個代碼。
是否存在內存問題?你知道更好的方法嗎?我想避免在用戶處於第二個viewController時進行錄製。
我在dealloc上發佈它。 – VansFannel
我已更新我的問題,並提供更多詳細信息。我檢查記錄器==零創建一個新的,所以我不認爲我在每個視圖重新加載創建一個。 – VansFannel