Xcode 14.2播放音频出现AddInstanceForFactory警告如何解决?
解决AVFoundation播放音频时的
[plugin] AddInstanceForFactory警告 这个警告是AVFoundation在macOS 13 + Xcode 14.2环境下的插件加载兼容性问题,不影响音频播放功能,但可以通过以下方法消除:
提前初始化并配置AVAudioSession
在viewDidLoad中先设置音频会话类别并激活,让AVFoundation提前完成必要的初始化工作,避免触发插件加载警告:override func viewDidLoad() { super.viewDidLoad() // 配置音频会话 do { try AVAudioSession.sharedInstance().setCategory(.playback) try AVAudioSession.sharedInstance().setActive(true) } catch { print("音频会话配置失败: \(error)") } }优化代码中的强制解包逻辑
虽然不是警告的直接诱因,但代码里的try!和url!强制解包存在崩溃风险,建议替换为安全的可选绑定,同时提升代码健壮性:func playSound() { guard let url = Bundle.main.url(forResource: "C", withExtension: "wav") else { print("找不到目标音频文件") return } do { player = try AVAudioPlayer(contentsOf: url) player?.play() } catch { print("音频播放器初始化失败: \(error)") } }
修改后的完整代码
import UIKit import AVFoundation class ViewController: UIViewController { var player: AVAudioPlayer? override func viewDidLoad() { super.viewDidLoad() // 配置音频会话 do { try AVAudioSession.sharedInstance().setCategory(.playback) try AVAudioSession.sharedInstance().setActive(true) } catch { print("音频会话配置失败: \(error)") } } @IBAction func keyPressed(_ sender: UIButton) { playSound() } func playSound() { guard let url = Bundle.main.url(forResource: "C", withExtension: "wav") else { print("找不到目标音频文件") return } do { player = try AVAudioPlayer(contentsOf: url) player?.play() } catch { print("音频播放器初始化失败: \(error)") } } }
按上述方式修改后,目标警告即可消除,同时代码的稳定性也得到了提升。
内容的提问来源于stack exchange,提问作者KirstenT
相关产品推荐
相关产品推荐

