Xcode11.1(iOS13.1)AVAudioPlayer で音楽が再生されない。音楽再生でエラーになる。

Xcode11.1(iOS13.1)AVAudioPlayer で音楽が再生されない、音楽再生でエラーになる場合の対応


Xcode11.0(iOS13.0)の環境では問題なく、音楽は再生されていましたが、 Xcode11.1(iOS13.1)にアップすると音楽が再生されない問題(「Thread 1: EXC_BAD_ACCESS」エラー)への対処方法です。

※この記事は、書籍「たった2日でマスターできる iPhoneアプリ開発集中講座 Xcode11/Swift5対応(2019年10月出版)」 に関してのサポート情報として記載しています。

問題:音楽再生時に「Thread 1: EXC_BAD_ACCESS」エラーで停止する

Thread 1: EXC_BAD_ACCESS (code=1, address=0x48)

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アプリ開発集中講座

参考情報


よっしー

この記事を書いた人。 質問は、Twitter で受付けています。 エンジニア歴は約20年のフリーランスエンジニア。自分たちの資産になるWebサービスやアフィリエイトブログや新規事業が大好き。テニスコート予約サービスの開発 をしています。 4年連続出版【iPhoneアプリ開発集中講座】の著者。プロフィールの詳細はこちら。