如何解决音频播放器未初始化Swift
我正在尝试“触摸” KikiAudioPlayer中的音频播放器。这是我要这样做的观点。
class AudioBarView: UIView {
@IBOutlet weak var playPauseButton: UIButton!
@IBOutlet weak var NowPlayingSongLabel: UILabel!
var kikiAudioPlayer = KikiAudioPlayer()
@IBAction func playPauseButtonpressed(_ sender: UIButton) {
let playImage = UIImage(systemName: "play.fill")
if playPauseButton.currentimage == playImage {
playPauseButton.setimage(UIImage(systemName: "pause.fill"),for: .normal)
kikiAudioPlayer.play()
} else {
playPauseButton.setimage(UIImage(systemName: "play.fill"),for: .normal)
kikiAudioPlayer.pause()
}
}
}
这是“ KikiAudioPlayer”的片段和音频播放器的声明。
class KikiAudioPlayer: NSObject,AVAudioPlayerDelegate {
var audioPlayer = AVAudioPlayer()
func play() {
audioPlayer.play()
delegate?.audioPlayerPlayingStatusChanged(isPlaying: true)
updater = CAdisplayLink(target: self,selector: #selector(updateDelegate))
updater.add(to: RunLoop.current,forMode: RunLoop.Mode.common)
setWaiting(to: false)
}
func pause() {
audioPlayer.pause()
delegate?.audioPlayerPlayingStatusChanged(isPlaying: false)
updater.invalidate()
setWaiting(to: true)
}
}
按下按钮时,我的断点就是这样。这意味着我按下该按钮没有任何改变。
po kikiAudioPlayer.audioPlayer <uninitialized>
问题是,如果我创建了KikiAudioPlayer的实例,为什么未初始化AudioBarView中的音频播放器。
我没有向播放器提供任何资产(这并不重要),因为音频播放器可以正常工作,但问题是无法暂停播放。
我尝试清理构建文件夹,但没有帮助。
解决方法
我会与以下代码进行争论:
var audioPlayer = AVAudioPlayer()
AVAudioPlayer没有将init()
列为有效的初始化程序。即使您可以在没有警告的情况下使用它。官方文件显示了四个单独的初始化程序,所有初始化程序都至少带有一个参数。
我建议您查看https://www.onooks.com/psa-avaudioplayer-alloc-init-crashes-in-ios-13-1-and-avaudioplayer/此博客以获取更多信息。
已更新:https://developer.apple.com/documentation/avfoundation/avaudioplayer
,答案比我想的要简单。我在KikiAudioPlayer中删除了音频播放器的声明,并将其添加到App委托中。
var audioPlayer: AVAudioPlayer!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。