AVAudioPlayer播放/暂停/停止和UIViewController发布/ dealloc

时间:2011-12-12 10:50:58

标签: ios uiviewcontroller avaudioplayer

我有一个附带视图控制器的AVAudioPlayer实例。

@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];
}

点击按钮即可播放音频。

[self.previewAudioPlayer play];

现在,如果视图控制器被解除或弹出,应该调用dealloc并且音频播放器应该停止并且应该销毁视图控制器。但是,这不会发生。音频不会停止,因为在音频停止播放之前不会调用dealloc。这里发生了什么?并且,如果用户解除控制器而不是音频停止,我该如何确保。

1 个答案:

答案 0 :(得分:2)

您可以在视图被解除时暂停或停止音频,即调用viewWillDisappear:viewDidDisappear:方法时。

- (void)viewWillDisappear:(BOOL)animated 
{
   [_previewAudioPlayer stop];
   [super viewWillDisappear:animated];
}