[NSPathStore2 finishedPlaying]:无法识别的选择器发送到实例

时间:2011-03-25 19:35:31

标签: iphone cocos2d-iphone selector ios3.0

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

*** 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及更高版本的设备上完美运行。

3 个答案:

答案 0 :(得分:3)

很抱歉打破这个老话题,但我几周来一直在努力解决同样的问题,并想分享我的经验。

我的一小部分用户正在获得以下格式的致命异常: “[__ NSCFNumber finishedPlaying:]:无法识别的选择器发送到实例0x1fa8ed40” 它似乎仅限于iOS 6设备,但由于我无法自行重现,因此无法进行调试。

我相信另外两个答案正在咆哮错误的树。两者都表明问题与AVAudioPlayer委托有关,这是The reason behind crash in AVAudioPlayer finishedPlaying after upgrade to iPhone 3.0 OS中讨论的问题。但是你会注意到在这种情况下成功调用了finishedPlaying方法,并且异常与audioPlayerDidFinishPlaying:方法有关。

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

基于此实现,我现在认为问题是AVAudioPlayer被错误管理的结果(我使用的是非ARC助手类:NTAVManager)。我已经更新了课程以使用ARC并希望这可以解决我的问题,但正如我所说,我自己从未能够重现它,所以我将无法确认几周。

答案 1 :(得分:1)

对我有用的解决方案是:

AVAudioPlayer_Instance.delegate = nil;

AVAudioPlayer_InstanceAVAudioPlayer的实例,应该在dealloc之前调用。

答案 2 :(得分:0)

看看这个:The reason behind crash in AVAudioPlayer finishedPlaying after upgrade to iPhone 3.0 OS

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