2010-09-26 30 views
2

遇到一个有趣的问题,不知道如何管理它。audioPlayerDidFinishPlaying回调之前的对象释放

处理AVAudioPlayer回调方法audioPlayerDidFinishPlaying的最佳方法是什么?例如,如果AVAudioPlayer的实例是在音频完成但包含AVAudioPlayer(和回调)的对象的回调中使用回调来创建的,在音频结束前解除分配?

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

考虑这个问题,答案可能会在整个回调中发挥作用。必须有某种方法销毁或取消回调方法。

回答

0

您必须跟踪您在-dealloc(例如,http:// www。

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

没有什么神奇的方法,搜索一切曾经看起来像它可能是一个指向你和零点任何指针。这种方法存在很多问题(不限于被忽视......)。