У меня есть следующий код для (повторного) запуска AVAudioEngine
, подключенного к AVAudioEngineConfigurationChangeNotification
:
do {
try self.engine.start()
} catch {
DDLogError("could not start sound engine")
self.soundEnabled = false
return
}
self.engine определяется как
private let engine = AVAudioEngine()
Однако я часто получаю отчеты о сбоях через Crashlytics, в которых говорится:
Фатальное исключение: ошибка com.apple.coreaudio.avfaudio 561015905
в строке, содержащей try self.engine.start()
.
561015905 — это AVAudioSessionErrorCodeCannotStartPlaying
, и насколько я понимаю, это должен быть код ошибки NSError
, а не исключение, которое должно быть перехвачено моим пустым catch
в приведенном выше коде. Тем не менее, приложение просто вылетает в этот момент. Что мне не хватает?
Я знаю, что бывают ситуации, когда приложение просыпается в фоновом режиме, когда может возникнуть эта ошибка, и меня это устраивает, если я могу каким-то образом поймать это, как я думал, что смогу с do/catch
.
AVAudioEngine
. - person Mike   schedule 13.02.2016AVAudioEngine
из-за этой ошибки. С тех пор Apple попросила нас воспроизвести ошибку с более новыми версиями iOS (и автоматическое сообщение, отправленное в открытые отчеты при выпуске новых версий SDK), но, поскольку проблема нас больше не интересует, мы этого не сделали. Это означает, что если вам все еще не все равно, вам, вероятно, следует открыть свой собственный отчет об ошибке. Извините, я не мог больше помочь, удачи в решении этой проблемы. Если вы когда-нибудь это сделаете, я хотел бы услышать ответ! - person Mike   schedule 27.07.2017