【问题标题】:Unexpectedly found nil when generating sine wave with AudioKit使用 AudioKit 生成正弦波时意外发现 nil
【发布时间】:2022-11-18 13:58:45
【问题描述】:

我正在尝试重现 audiokit cookbook's recipe for Dynamic Oscillator 背后的代码。不是用户界面,只是音频部分。该食谱在我的模拟器上构建和运行得很好。

这是我的视图控制器:

这是我的振荡器:

在视图控制器中,您可以看到注释行

// sound = OscillatorConductor()

如果我取消注释该行,它会在按钮事件中实例化 OscillatorConductor,导致此错误出现在控制台中,尽管应用程序不会崩溃/退出,只是输出控制台错误:

AddInstanceForFactory:没有为 id <CFUUID 0x600002903280> F8BB1C28-BAE8-11D6-9C31-00039315CD46 注册的工厂

为了消除这个错误,我将 sound=OscillatorConductor() 移动到按钮事件之外但仍在类内并将其更改为

var 声音:振荡器导体!

我是 Swift 的新手,但我理解“!”操作员基本上告诉 swift,“别担心,当你访问它时它不会为 null”。为什么我在运行时创建的这个 OscillatorConductor 是 nil?我正在使用模拟器进行构建。

另外,如果有人有更好的处理 DynamicOscillator/AudioKit 的技巧,我会洗耳恭听。

【问题讨论】:

  • 请用代码的实际文本替换代码的图片。当代码在图片中时,人们无法复制、搜索或引用代码。文字总是更好。
  • 请将您的代码粘贴为代码块中的文本,而不是图像。图片无法复制到答案中,也不适用于屏幕阅读器。你到底把sound = OscillatorConductor() 移到了哪里?你是对的,一个隐式展开的可选是一个价值不会是nil的合同。它是nil,所以你会崩溃。它是nil,因为当你试图访问它时你还没有赋值

标签: ios swift avaudioplayer audiokit


【解决方案1】:

// Declare var sound as:

var sound: OscillatorConductor?

在你的 viewDidLoad() 中:

self.sound = OscillatorConductor()

if let sound = sound {
        // here is not nil
    } else {
        // sound is nil here
    }

【讨论】:

    猜你喜欢
    • 2015-02-01
    • 2016-07-10
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 2018-06-11
    • 1970-01-01
    • 2021-09-08
    相关资源
    最近更新 更多