我想了解一些關於AVAudioPlayer和AVAudioRecorder的內存問題。AVAudioPlayer內存管理
我創建AVAudioRecorder:
-(void)loadAudioForPage {
AVAudioRecorder *recorder = [[AVAudioRecorder alloc] initWithURL:audioFileURL settings:recordSettings error:&err];
self.audioRecorder = recorder;
[recorder release];
}
此方法將它駐留在所述控制器的壽命期間被調用多次,並且每一次的屬性audioFileURL將是不同的。
我已經將錄像機分配給我的視圖控制器的實例變量,屬性保留它,所以我釋放。
現在,如果我只是在dealloc中發佈audioRecorder,所有可能都會很好,除非我需要在調用dealloc之前將另一個實例指定給該屬性。
所以,我的想法是把它的委託方法:
-(void) audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag {
[audioRecorder release];
self.audioRecorder = nil;
}
然而,這崩潰。有人可以向我解釋爲什麼? AVAudioRecorder是否會自動釋放,即使我已經分配了它?我是如何保留它兩次的,第二次釋放它會崩潰(EXEC_BAD_ACCESS)?
感謝您的洞察力。我不完全清楚。 – isaac 2010-11-09 00:53:08