遇到一个有趣的问题而不确定如何管理它。
处理AVAudioPlayer回调方法audioPlayerDidFinishPlaying的最佳方法是什么,例如,如果AVAudioPlayer的实例是使用回调创建的,当音频结束但包含AVAudioPlayer(和回调)的对象被释放时在音频结束之前?
这是我目前的情况,即应用程序崩溃,因为现在尝试调用现在不存在的回调方法。
考虑到这一点,答案可能与整个回调相关。必须有某种方法来销毁或取消回调方法。
答案 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];
}
没有任何神奇的方法可以搜索所有的任何指针,看起来它可能是指向你的指针并将其归零。这种方法存在许多问题(不限于懒散......)。