音楽プレイヤーのエラーについて
以下のように、View Controller内に2つのプレイヤーを設置し、個別に再生、停止、ボリュームスライダーを設け、それぞれ別の音源を同時に鳴らすことができるようにしています。シミュレーター上でも実機でも、再生ボタンを押した後は安定して動作するのですが、再生ボタンを押さない状態で停止、またはスライダーにタッチすると、アプリが強制終了してしまいます。その際、停止ボタンにタッチしていれば停止ボタンに、スライダーならスライダーにthread1:EXC_BAD_ACCESS(code1,address=0×38)というエラーが出ます。再生ボタンを押してからならどのボタンもしっかり挙動するのに、再生のボタンを押さずに停止やスライダーをタッチした時だけ起こるのは何が原因なのでしょうか?初心者のため対策に難儀しております。ご教示いただけると幸いです。
import UIKit
import AVFoundation
class ViewController: UIViewController {
@IBAction func play(sender: AnyObject) {
let audioPath = NSBundle.mainBundle().pathForResource("sound", ofType: "wav")!
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
try Player1 = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: audioPath))
Player1.play()
} catch {
}
}
@IBAction func play2(sender: AnyObject) {
let audioPath = NSBundle.mainBundle().pathForResource("music", ofType: "wav")!
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
try Player2 = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: audioPath))
Player2.play()
} catch {
// Process error here
}
}
@IBAction func pause(sender: AnyObject) {
Player1.pause()
}
@IBAction func pause2(sender: AnyObject) {
Player2.pause()
}
@IBAction func adjustvolume1(sender: AnyObject) {
Player1.volume = volumeslider1.value
}
@IBAction func adjustvolume2(sender: AnyObject) {
Player2.volume = volumeslider2.value
}
@IBOutlet weak var volumeslider1: UISlider!
@IBOutlet weak var volumeslider2: UISlider!
var Player1: AVAudioPlayer = AVAudioPlayer()
var Player2: AVAudioPlayer = AVAudioPlayer()
override func viewDidLoad() {
super.viewDidLoad()
func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: Volume Changed
}
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/01 11:45
2016/02/01 11:50
2016/02/01 12:13
2016/02/01 12:21
2016/02/01 12:40