在运行我的程序时间歇性地崩溃:
*** 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及更高版本的设备上完美运行。
答案 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_Instance
是AVAudioPlayer
的实例,应该在dealloc
之前调用。
答案 2 :(得分:0)
看看这个:The reason behind crash in AVAudioPlayer finishedPlaying after upgrade to iPhone 3.0 OS
我怀疑对AVAudioPlayer委托的引用不再有效,并且正在将消息发送到另一个对象的地址(在您的情况下为NSPathStore2)。