audioPlayerDidFinishPlaying回调之前的对象释放

时间:2010-09-26 23:28:02

标签: iphone callback avaudioplayer

遇到一个有趣的问题而不确定如何管理它。

处理AVAudioPlayer回调方法audioPlayerDidFinishPlaying的最佳方法是什么,例如,如果AVAudioPlayer的实例是使用回调创建的,当音频结束但包含AVAudioPlayer(和回调)的对象被释放时在音频结束之前?

这是我目前的情况,即应用程序崩溃,因为现在尝试调用现在不存在的回调方法。

考虑到这一点,答案可能与整个回调相关。必须有某种方法来销毁或取消回调方法。

1 个答案:

答案 0 :(得分:0)

您必须跟踪您为“回调”注册的所有内容,并在-dealloc中取消设置,例如

-(void)dealloc
{
  // If you've registered for notifications, do something like this:
  [[NSNotificationCenter defaultCenter] removeObserver:self];

  // If you're the delegate of something, do something like this:
  self.audioPlayer.delegate = nil;
  self.audioPlayer = nil;

  [super dealloc];
}

没有任何神奇的方法可以搜索所有任何指针,看起来它可能是指向你的指针并将其归零。这种方法存在许多问题(不限于懒散......)。