私がやりたいことは(今のところ)AVAudioEngine
とAVAudioPlayerNode
を使ってサウンドファイルを再生しています。私のコードは次のとおりです。AVAudioPlayerNodeを出力に接続するときにAVAudioEngineが例外をスローする
//Init engine and player
let audioEngine = AVAudioEngine()
let audioPlayerNode = AVAudioPlayerNode()
//Hook them up
audioEngine.attach(audioPlayerNode)
audioEngine.connect(audioPlayerNode, to: audioEngine.outputNode, format: nil) // < error
最後の行を実行しているときに例外がスローされます。何もコンソールに出力されていないと実行が継続されますが、私はLLDBと、次の取得例外ブレークポイントを設定する場合:ここで何を
(lldb) po [$arg1 reason]
error: Execution was interrupted, reason: EXC_BAD_ACCESS (code=1, address=0xffffd593).
The process has been returned to the state before expression evaluation.
をアクセスすることはできませんか?私はまだファイルをロードしていない...任意のヒントのおかげで。
環境
- のXcode 8.2.1
- のiOS 10.3.2上で実行されているiPhone 5(14F89)
編集
ここではいくつかのより多くのコンテキスト情報があります。上記のコードは、SpriteKit
とGameplayKit
で構築されたiOSゲームの一部です。それはplaySound
と呼ばれる方法の中でGKStateMachine
のサブクラスにあります。このメソッドは、GameScene
と呼ばれるサブクラスSKScene
から発生したタッチイベントの過程で呼び出されます。 touchesBegan
になると、同じシグネチャ(touchesBegan
)のメソッドを持つTouchComponent
のすべてのエンティティにコールが委任されます。これらのコンポーネントはtouchDown
イベントをデリゲートに送信し、そのサブクラスはGKStateMachine
のサブクラスで、GameStateMachine
となります。タッチイベントがの場合、正しい w.r.t.ゲームのルール、私のGameStateMachine
のscore
プロパティが増分されます。 score
設定者の中では、スコアが増加すると最終的な方法playSound
が呼び出されます。ここで私は今説明したもののシーケンス図があります:
このコードはどのように実行していますか? iOSアプリの一部であるPlaygroundは、View Controllerのコードですか?あなたはもう少し文脈を与えることができますか?あなたがそれを使用しようとする前に何かが割り当て解除されたように見えるからです。 – marius