AVAudioPlayerで音が鳴らなかった問題
結論:インスタンスはプロパティで保持しろ
do { let player = try AVAudioPlayer(contentsOfURL: fileUrl) player.volume = 1.0 player.numberOfLoops = 0 guard player.prepareToPlay() else { return } player.play() } catch let error as NSError { print(error.localizedDescription) }
こんな処理を書いて音が鳴らない…なんで?としょうもないところで悩んだ。
シミュレーターだから?実機でもだめだ…ファイルパスは合ってる…とか調べて悩んでたけど、ググったらプロパティで作ったら鳴ったとかあった。
試したら見事に、その理由。
処理して音が鳴る前にローカル変数のインスタンスが破棄されてるみたいね。
プロパティを減らしてメモリ消費量を抑えるように心がけた結果、裏目にでた感じ。