You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 23:44:59