当我调用“.stop()”方法时,Swift / Xcode6 AVAudioPlayer崩溃

时间:2015-06-26 03:18:25

标签: ios swift xcode6 avaudioplayer

在我的班级“AudioHub”中我有这段代码

 var myAudioPlayer = AVAudioPlayer()
func audioPlayer(audioName: String ) {
    println("hey")
    var error:NSError?
    if let audioURL = NSBundle.mainBundle().URLForResource(audioName, withExtension: "mp3") {
        myAudioPlayer = AVAudioPlayer(contentsOfURL: audioURL, error: &error)
        myAudioPlayer.prepareToPlay()
        myAudioPlayer.play()
    } else if let error = error {
        println(error.description)
    }
}

在我的ViewController类中,我使用

初始化我的AudioHub类
var bridge = AudioHub()

在我的ViewControllers viewDidLoad方法中,我调用

bridge.playAudio("testSound")

它开始播放声音很好...但是,我在ViewController类的按钮中嵌入了另一种方法,该方法应该阻止音频播放此代码:

bridge.stop()

每当我点击按钮时,程序就会因EXC_BAD_ACCESS错误而崩溃...我认为这个问题与从另一个类调用该方法有关,因为当我将所有内容保留在一个类中时没有任何问题。但是我需要一个班级间的解决方案。

1 个答案:

答案 0 :(得分:0)

与AVMIDIPlayer上的.stop()相同。 超级简单的方法:

func stopMIDIPLayer() {
    if let mp = self.mp {
        if mp.playing {
            mp.stop()
        }
    }
}

我的播放器是单身,我也是从我的viewController调用stopMIDIPlayer()方法。