[NSPathStore2 finishPlaying]: нераспознанный селектор отправлен на экземпляр - PullRequest
1 голос
/ 25 марта 2011

Периодически во время работы моей программы она вылетает с:

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

По данным Интернета, для этой функции не доступно ни одной документации, поэтому я обращаюсь к вам прославившемуся переполнению стека.

Кажется, что это несколько совпадает с загрузкой / воспроизведением звуков с использованием библиотеки CocosDenshion.Я не могу быть точно уверен, где именно (если это так), потому что, кажется, этого не происходит, пока я прохожу.

Это во время тестирования на iPod Touch 1-го поколения с установленной 3.1.3.Программа работает безупречно на устройствах с iOS 3.2 и выше.

Ответы [ 3 ]

3 голосов
/ 18 июня 2013

Извините, что поднял эту старую тему, но я боролся с той же самой проблемой в течение пары недель и хотел поделиться своим опытом.

Небольшой процент моих пользователей получают фатальные исключения из формата: «[__NSCFNumber finishPlaying:]: нераспознанный селектор отправлен на экземпляр 0x1fa8ed40» Похоже, что он ограничен устройствами iOS 6, но отладку было невозможно, так как я сам не могу воспроизвести его.

Я полагаю, что два других ответа лают не на то дерево. Обе предполагают, что проблема связана с делегатом AVAudioPlayer, проблема, которая обсуждалась в Причина сбоя в AVAudioPlayer FinishPlaying после обновления до iPhone 3.0 OS Но вы заметите, что в этом случае метод finishPlaying успешно вызывается, и исключение там связано с audioPlayerDidFinishPlaying: метод.

В этой задаче нераспознанный селектор finishPlaying: не распознается, что означает, что сам AVAudioPlayer больше не является допустимым, а является его делегатом.

После этой реализации я теперь думаю, что проблема заключается в неправильном управлении AVAudioPlayer (я использовал вспомогательный класс не-ARC: NTAVManager). Я обновил класс для использования ARC и надеюсь, что это решит мою проблему, но, как я уже сказал, я никогда не смог воспроизвести его сам, поэтому не смогу подтвердить в течение нескольких недель.

1 голос
/ 02 июля 2012

Решение, которое сработало для меня:

AVAudioPlayer_Instance.delegate = nil;

AVAudioPlayer_Instance - ваш экземпляр AVAudioPlayer, и его следует вызывать до dealloc.

0 голосов
/ 07 апреля 2011

Взгляните на это: Причина сбоя в AVAudioPlayer Закончилась игра после обновления до ОС iPhone 3.0

Я подозреваю, что ссылка на делегат AVAudioPlayer больше не действительна, исообщение отправляется на адрес другого объекта (NSPathStore2 в вашем случае).

...