2

在运行我的程序时,它会间歇性地崩溃:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSPathStore2 finishedPlaying]: unrecognized selector sent to instance 0x286e20'

根据互联网,有关此功能的可用文档为零,因此我求助于杰出的 Stack Overflow。

它似乎与使用 CocosDenshion 库加载/播放声音有点重合。我无法确定确切的位置(如果是的话),因为在我逐步完成时它似乎从未发生过。

这是在安装了 3.1.3 的第一代 iPod Touch 上进行测试时进行的。该程序可在 iOS 3.2 及更高版本的设备上完美运行。

4

3 回答 3

3

很抱歉碰到这个老话题,但我已经在同一个问题上苦苦挣扎了几个星期,想分享我的经验。

我的一小部分用户遇到了以下格式的致命异常:“[__NSCFNumber finishedPlaying:]: unrecognized selector sent to instance 0x1fa8ed40” 似乎仅限于 iOS 6 设备,但由于无法调试,因此无法调试自己重现。

我相信另外两个答案是错误的树。两者都表明问题与 AVAudioPlayer 委托有关,这是在升级到 iPhone 3.0 OS 后 AVAudioPlayer 崩溃的原因中讨论的问题。但是您会注意到,在这种情况下,finishedPlaying 方法被成功调用,并且异常与 audioPlayerDidFinishPlaying: 方法有关。

在这个问题中,finishedPlaying: 选择器无法识别,这意味着 AVAudioPlayer 本身不再有效,而不是它的委托。

意识到这一点后,我现在认为问题是 AVAudioPlayer 管理不正确的结果(我使用的是非 ARC 帮助器类:NTAVManager)。我已经更新了课程以使用 ARC,并希望这能解决我的问题,但正如我所说,我自己从来没有能够重现它,所以我将无法确认几个星期。

于 2013-06-18T15:09:15.707 回答
1

对我有用的解决方案是:

AVAudioPlayer_Instance.delegate = nil;

AVAudioPlayer_Instance是你的实例,AVAudioPlayer这应该在之前调用dealloc

于 2012-07-02T06:26:47.980 回答
1

看看这个:升级到 iPhone 3.0 OS 后 AVAudioPlayer finishedPlaying 崩溃的原因

我怀疑对 AVAudioPlayer 委托的引用不再有效,并且消息正在发送到不同对象的地址(在您的情况下为 NSPathStore2)。

于 2011-04-07T03:33:19.863 回答