보기 컨트롤러와 연결된 AVAudioPlayer 인스턴스가 있습니다.AVAudioPlayer 재생/일시 정지/중지 및 UIViewController 릴리스/dealloc
@property (nonatomic, retain) AVAudioPlayer *previewAudioPlayer;
-viewDidLoad
으로 초기화했습니다.
NSError *error = nil;
AVAudioPlayer *aNewPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];
self.previewAudioPlayer = aNewPlayer;
[aNewPlayer release];
[self.previewAudioPlayer prepareToPlay];
그리고보기 컨트롤러 -dealloc
에서 해제합니다.
- (void)dealloc {
[_previewAudioPlayer pause];
[_previewAudioPlayer release];
[super dealloc];
}
오디오는 버튼 클릭으로 재생됩니다. 뷰 컨트롤러가 기각 또는 pop'ed 경우
[self.previewAudioPlayer play];
는 이제, dealloc을 호출해야하며, 오디오 플레이어는 중지해야하고 뷰 컨트롤러가 파괴되어야한다. 그러나 이것은 발생하지 않습니다. 오디오는 멈추지 않습니다. 오디오가 재생을 멈출 때까지 dealloc이 호출되지 않기 때문입니다. 무슨 일 이니? 그리고 어떻게하면 오디오가 멈추는 지 사용자가 컨트롤러를 없앨 지 확신 할 수 있습니다.
오디오를 계속 재생하는 방법을 아십니까? 우리는 AVPlayer의 인스턴스를 만든 ViewController를 파괴했습니다. –