- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个奇怪的行为,即我的应用程序在返回到之前的 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/
我有一个计时器: let queue = DispatchQueue(label: "com.domain.app.timer") timer = DispatchSource.makeTimerSo
我有一个奇怪的行为,即我的应用程序在返回到之前的 View Controller 后崩溃了。我有一个显示配置文件 Controller ,然后我去编辑配置文件 Controller 。我在那里录制了一
我正在尝试使用 DispatchSourceTimer 在另一个线程上运行重复计时器。这段代码在 Playground 上运行良好,但在我的 iOS 应用程序中,它总是在 deinit 方法上崩溃(或
我不知道如何让调度计时器在 Swift 3.0 中重复工作。我的代码: let queue = DispatchQueue(label: "com.firm.app.timer",
我不知道如何让调度计时器在 Swift 3.0 中重复工作。我的代码: let queue = DispatchQueue(label: "com.firm.app.timer",
我有一个正在运行的 DispatchSourceTimer 是用以下方法创建的: self.timer = DispatchSource.makeTimerSource(flags: .init(ra
我很难理解 DispatchSourceTimer 之间的主要区别, Timer和 asyncAfter (在我的例子中,调度一个需要每 X 秒运行一次的任务,尽管了解定时器的差异可能对有用)(或者除
我不知道如何让调度计时器在 Swift 3.0 中重复工作。我的代码: let queue = DispatchQueue(label: "com.firm.app.timer",
我是一名优秀的程序员,十分优秀!