【发布时间】: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