当我点按音量按钮时,我的应用程序崩溃了。在我的视图控制器中,我在setActive
上呼叫AVAudioSession.sharedInstance()
,当用户点按按钮时,我会播放AVAudioPlayer
的歌曲。在此视图控制器中,每当按下音量按钮时,播放器是否正在播放,应用程序将与EXC_BAD_ACCESS
崩溃。我在调试器中看到一条错误消息,偶尔会抱怨outputVolume
的键值观察。
为什么我的应用崩溃了?
一个CLUE:我可以通过两种方式找到导致崩溃的视图控制器。一种方法导致崩溃而另一种方法不导致崩溃。无论哪种方式,我都以相同的方式将视图控制器推送到导航控制器。
答案 0 :(得分:1)
你添加了类似的东西吗? :
let audioSession = AVAudioSession.sharedInstance()
audioSession.addObserver(self, forKeyPath: "outputVolume",
options: NSKeyValueObservingOptions.new, context: nil)
如果你这样做,那么你需要覆盖这个方法,并在其中做任何你需要的事情:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "outputVolume"{
}
}