Ho il seguente codice per (ri) avviare AVAudioEngine
cablato fino a AVAudioEngineConfigurationChangeNotification
:Crash in AVAudioEngine.start() anche se è avvolto in Do/catch
do {
try self.engine.start()
} catch {
DDLogError("could not start sound engine")
self.soundEnabled = false
return
}
self.engine è definito come
private let engine = AVAudioEngine()
Tuttavia, ho spesso ricevo segnalazioni di crash via dicendo Crashlytics
irreversibile: com.apple.coreaudio. errore avfaudio 561015905
sulla riga contenente try self.engine.start()
.
561015905 è AVAudioSessionErrorCodeCannotStartPlaying
e da quanto ho capito, questo dovrebbe essere un codice di errore di NSError
, non un'eccezione, che dovrebbe essere catturato dal mio vuoto catch
nel codice sopra. Tuttavia, l'app sembra proprio bloccarsi a quel punto. Cosa mi manca?
So che ci sono situazioni in cui l'applicazione si sveglia in background in cui questo errore può verificarsi e mi sarebbe bene con che, fintanto che posso in qualche modo catturare ciò accada, come ho pensato che avrei potuto con do/catch
.
Viene visualizzato un errore simile. Hai capito perché questo stava accadendo? – Pulsar
No. Ho aperto una segnalazione di bug con Apple ma non ho ancora ricevuto una risposta. Nel frattempo ho smesso di usare 'AVAudioEngine'. – Mike
@Puoi eventuali aggiornamenti su questo? Hai trovato un lavoro migliore di sleep()? E hai sentito parlare di Apple? Questo è ancora un problema in iOS 11 dal suo aspetto. –