Mon application se bloque sur iOS 13.1 lorsque je trace un problème, puis que l'application se bloque à cause de AVAudioPlayer
.
Ci-dessous se trouve la configuration de mon lecteur.
if let wrongURL = Bundle.main.url(forResource: "wrongAudio", withExtension: "mp3")
{
do {
wrongMusicPlayer = try AVAudioPlayer(contentsOf: wrongURL)
wrongMusicPlayer.prepareToPlay()
}
catch
{
print(error.localizedDescription)
}
}
Ici Toutes les choses ont été trouvées correctement mais plantent lorsque AVAudioPlayer
essaie de s'initialiser avec URL
.
J'ai trouvé un problème de plantage dans AVAudioPlayer
avec iOS 13.1.
Voici la solution
Pourquoi mon AVAudioPlayer
plante? car
J'initialise AVAudioPlayer
comme
var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()
puis j'essaye de réaffecter wrongMusicPlayer
comme ci-dessous
wrongMusicPlayer = try AVAudioPlayer(contentsOf: wrongURL)
Et mon application se bloque.
Solution
Si vous initialisez votre AVAudioPlayer
comme var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()
OR wrongMusicPlayer = AVAudioPlayer()
dans n'importe quelle méthode, veuillez le supprimer et simplement déclarer comme var wrongMusicPlayer: AVAudioPlayer!
.
iOS 13.2, qui sera publié aujourd'hui, résout ce problème.
Merci, Rakesh! C'est incroyable! Mon jeu s'est cassé sur iPhone avec iOS 13.1.2. Mais dans le simulateur, cela fonctionne. Sur un appareil physique - non! J'ai lu beaucoup de forums, livres en ligne, documents, etc.
Et ce petit correctif m'a vraiment aidé: j'ai changé var player = AVAudioPlayer()
en var player: AVAudioPlayer!
p.s. les gars ont écrit sur le problème avec les threads mais ce cas est plus simple
Le même problème se produit avec le code Objective C.
Auparavant musicPlayer = [[AVAudioPlayer alloc] init]; fonctionnerait mais entraînera désormais un plantage dans iOS13. Le plantage se produit plus tard lors de l'utilisation de l'une des autres méthodes d'initialisation comme initWithContentsOfURL.
La suppression de [[AVAudioPlayer alloc] init] résout le problème.