gpt4 book ai didi

ios - DispatchSourceTimer 在 segue 上没有错误地使应用程序崩溃

转载 作者:行者123 更新时间:2023-11-28 12:15:12 45 4
gpt4 key购买 nike

我有一个奇怪的行为,即我的应用程序在返回到之前的 View Controller 后崩溃了。我有一个显示配置文件 Controller ,然后我去编辑配置文件 Controller 。我在那里录制了一个音频文件,然后 1 秒后返回到我之前的 View Controller ,应用程序崩溃了,没有错误,只是一个

Thread1: EXC_BREAKPOINT (code=1, subcode=0x1026eb43c)

我使用 DispatchSourceTimer 录制音频以便能够在录制时在 View 上添加一个计数器,并且我以这种方式初始化了一个全局变量:

var nonObservalePropertyUpdateTimes:DispatchSourceTimer = DispatchSource.makeTimerSource(flags: [], queue: DispatchQueue.main)

下面是我如何使用名为 AudioManager 的 Singltone 类进行录音:

@IBAction func micButtonTapped(_ sender: UIButton) {

if recButtonIsChecked {

if AudioManager.shared.record(fileName: "recbio") {

sender.setBackgroundImage(UIImage(), for: .normal)
sender.setImage(#imageLiteral(resourceName: "pauseProfileButton"), for: .normal)
playRecordButton.setBackgroundImage(#imageLiteral(resourceName: "editProfilePlay"), for: .normal)
recordVoiceLabel.isHidden = true
recButtonIsChecked = false
secondsLabel.isHidden = false

nonObservalePropertyUpdateTimes.resume()

}


nonObservalePropertyUpdateTimes.setEventHandler {[weak self] in

self?.secondsLabel.text = String(describing: AudioManager.shared.countDownTimer)

}

nonObservalePropertyUpdateTimes.schedule(deadline: DispatchTime.now(), repeating: DispatchTimeInterval.milliseconds(100))

} else {
sender.setBackgroundImage(#imageLiteral(resourceName: "editProfileMicButton"), for: .normal)
sender.setImage(UIImage(), for: .normal)
recButtonIsChecked = true
stopRecording()

}

}

我认为 DispatchQueue 中发生了一些错误导致了这次崩溃,因为当我从我的编辑配置文件 View Controller 中删除 nonObservalePropertyUpdateTimes 对象时,应用程序在我继续时没有崩溃回到我的个人资料 View Controller 。

所以我尝试这样做,但没有帮助:

override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)

nonObservalePropertyUpdateTimes.suspend()
nonObservalePropertyUpdateTimes.cancel()

}

或者也许有一种方法可以deinit 这个 Dispatch 对象。我真的不知道哪里出了问题,该怎么办。我什至没有正确的错误消息。

最佳答案

特别感谢所有试图帮助 Rob 的人。我只是以这种方式取消了 DispatchSourceTimer 的初始化,它工作正常并且不再崩溃。

deinit {
nonObservalePropertyUpdateTimes.resume()
}

关于ios - DispatchSourceTimer 在 segue 上没有错误地使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46865464/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com