我刚刚在我的 OS X 应用程序中启用了沙盒,现在我的核心音频代码不起作用。特别是,当我调用时AUGraphAddNode
,它返回错误invalidComponentID
,只是说“操作无法完成”。不过,在此之前,许多其他 Core Audio 调用似乎都可以正常工作。
这似乎不是直接的沙盒违规,因为控制台中没有来自沙盒的任何消息,但是当我关闭沙盒时它肯定会起作用。有谁知道为什么会发生这种情况?我唯一能想象的是,它可能正在尝试读取我无权访问的文件,尽管我认为这会给我一个沙盒错误。
更新:
为了澄清,我尝试启用每个沙盒权利,但问题仍然存在。
我也稍微缩小了这个问题的范围。仅当我尝试添加具有组件类型kAudioUnitType_MusicDevice
和子类型的节点时,该调用才会失败kAudioUnitSubType_DLSSynth
。
更新 2:
我想出了一个hacky的解决方法。如果我添加一个临时异常权利以启用对用户整个主目录的读写访问,则该错误不再发生。这显然不理想,所以我继续寻找更好的选择。我试图通过为更具体的子目录添加权利来缩小所需的访问范围,但这没有用。