如何解决如何从SwiftUI的视图中解除AVAudioPlayer实例的关联
(序言对编程和Swift来说是我的新手)
我正在制作一个警报应用程序,因此我有一个AudioPlayer类,该类主要基于本说明中概述的类,但对我需要的循环进行了一些修改:
https://blckbirds.com/post/voice-recorder-app-in-swiftui-1/
我有一个计时器和一个.onRecieve与创建我的屏幕时钟的视图相关联。计时器关闭,声音通过我的课程创建的@ObservedObject播放,点击按钮,然后触发.stop()函数。只要我停留在主视图上,所有这些操作大部分就可以完成。
我遇到的问题是,在某些情况下,视图更改似乎会使应用程序崩溃。具体来说:
“线程1:致命错误:在隐式展开一个可选值时意外发现nil”
在我的课堂上与.stop()相关的那一行。我认为这是因为没有发现任何音频播放器会停止播放,而我的猜测是这是因为它是在不再存在的其他视图中创建的?
一个典型的情况是我有一个风景视图,它只是时钟的大版本,而人像视图则具有控件。如果在横向时发出警报并触发声音,则切换为纵向或立即崩溃或当我点击按钮停止时都将崩溃。
我的想法是将音频实例移到视图之外或进入某种独立于视图状态的后台进程,但是我无法弄清楚该怎么做,即使我对问题进行了分析是正确的。
我尝试采取的另一种方法是在触发音频之前将屏幕强制返回到原始肖像视图,这样我只能在一个视图中处理音频(用户界面行为不理想,但可以接受我)。现在似乎根本无法播放声音,然后在点击停止按钮时仍然崩溃。
有人可以帮助我了解我的音频播放器对象怎么回事以及如何解决这个问题吗?谢谢,
丹
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。