Xcode11.0(iOS13.0)の環境では問題なく、音楽は再生されていましたが、 Xcode11.1(iOS13.1)にアップすると音楽が再生されない問題(「Thread 1: EXC_BAD_ACCESS」エラー)への対処方法です。
※この記事は、書籍「たった2日でマスターできる iPhoneアプリ開発集中講座 Xcode11/Swift5対応(2019年10月出版)」 に関してのサポート情報として記載しています。
問題:音楽再生時に「Thread 1: EXC_BAD_ACCESS」エラーで停止する
AVAudioPlayer で再生する音源ファイルを読み込み時に「Thread 1: EXC_BAD_ACCESS (code=1, address=0x48)」のエラーが表示されてプログラムが停止します。
対応方法:AVAudioPlayerインスタンスを修正
AVAudioPlayerのインスタンス生成を、変数宣言に変更すると動作します。
変更後のコードは、Xcode11.0(iOS13.0)、Xcode11.1(iOS13.1)でも動作します。
変更前:
// シンバル用のプレイヤーインスタンスを作成
var cymbalPlayer = AVAudioPlayer()
変更後:
// シンバル用プレイヤーの変数
var cymbalPlayer: AVAudioPlayer!
書籍「たった2日でマスターできる iPhoneアプリ開発集中講座」では、サポート情報として修正が必要な箇所をPDFにて公開しています。
サポート情報:たった2日でマスターできる iPhoneアプリ開発集中講座