【发布时间】:2020-01-21 23:28:54
【问题描述】:
每当对象被取消初始化时(例如,当执行展开转回另一个 ViewController 时),以下代码会导致崩溃并出现以下错误:
要求条件为假:[AVAudioEngineGraph.mm:4474:GetDefaultMusicDevice: (outputNode)]
由于未捕获的异常“com.apple.coreaudio.avfaudio”而终止应用程序,原因:“所需条件为假:outputNode”
AVAudioSequencer 是问题的根源,因为如果删除它,错误就会停止。
如何避免这种崩溃?
class TestAudioClass {
private var audioEngine: AVAudioEngine
private var sampler: AVAudioUnitSampler
private var sequencer: AVAudioSequencer
init() {
self.audioEngine = AVAudioEngine()
self.sampler = AVAudioUnitSampler()
audioEngine.attach(sampler)
audioEngine.connect(sampler, to: audioEngine.mainMixerNode, format: nil)
self.sequencer = AVAudioSequencer(audioEngine: audioEngine)
if let fileURL = Bundle.main.url(forResource: "TestMusic", withExtension: "mid") {
do {
try sequencer.load(from: fileURL, options: AVMusicSequenceLoadOptions())
} catch {
print("Error loading sequencer: \(error.localizedDescription)")
}
}
sequencer.prepareToPlay()
}
}
【问题讨论】:
标签: ios swift avfoundation core-audio avaudioengine