iOS 5 AVAudioPlayer - 启用ARC后,如何正确停止播放?

时间:2011-11-09 19:25:01

标签: objective-c ios5 release avaudioplayer automatic-ref-counting

我正在使用支持ARC的iOS 5。当点击视图时,我正在播放与特定视图相关联的录制内容。当用户更改视图时,播放停止。我使用NSNotification来调用-stopPlayback方法,该方法工作正常。问题是,当用户返回原始视图并点击它时,它会继续录制停止的位置。

禁用ARC后,我可以使用以下代码:

-stopPlayback
{
 if([audioPlayer isPlaying])
 {
 [audioPlayer stop];
 [audioPlayer release];
 audioPlayer = nil;
 }
}

由于ARC不允许[audioPlayer release],我无法从头开始重置播放。我删除了[audioPlayer release]和audioPlayer = nil;因为ARC会处理它,结果是录制播放在上一次停止后停止的位置。我没有看到Apple提供有关如何在播放时从头重新开始录制的好示例或文档。最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

您仍然需要设置为nil

if([audioPlayer isPlaying])
{
    [audioPlayer stop];
    audioPlayer = nil;
}

答案 1 :(得分:0)

这是我提出的解决方案:

-stopPlayback{  
 if([audioPlayer isPlaying])
 {
   [audioPlayer stop];
   audioPlayer.currentTime=0;
 }
}

录音现在从一开始就重播,无论它何时停止。 我尝试使用[audioPlayer pause]而不是[audioPlayer stop],这导致播放在初始暂停后不再播放。当我添加'audioPlayer = nil时,发生了类似的事情; (虽然我没有记录确切的组合)。作为响应的一部分发布的相关问题确实使用currentTime = 0,但其余代码不符合我的需求。任何人都可以看到为什么这不起作用?任何进一步的评论赞赏