微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

音频播放器未初始化Swift

如何解决音频播放器未初始化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>

enter image description here

问题是,如果我创建了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 举报,一经查实,本站将立刻删除。