头文件CoreAudio/AudioHardware.h引用了类“ AudioBox”,表示它与类“ AudioDevice”不同但相关。搜索 developer.apple.com 没有找到 AudioBox。不幸的是,有一种名为 AudioBox™ 的商业产品,它使得谷歌搜索这个词的收益非常低。
以下是包含参考文献的评论:
Run Code Online (Sandbox Code Playgroud)kAudioHardwarePropertyBoxList表示 系统当前提供的所有AudioBox对象的AudioObjectID数组。
Run Code Online (Sandbox Code Playgroud)kAudioHardwarePropertyTranslateUIDToBox此属性获取与 具有给定 UID的 AudioBox 对应的 AudioObjectID。UID 通过限定符作为 CFString 传入,而 AudioBox 的 AudioObjectID 作为属性数据返回给调用者。请注意,如果 UID 不引用任何AudioBox es,则不会返回错误。相反,该属性将
kAudioObjectUnknown作为该属性的值返回。
头文件:AudioHardwareBase.h包含大量对 AudioBox 的引用,但没有定义或解释它,尽管它将它与 AudioDevice相关联。
通过 XCode 搜索文档只会让我回到 AudioHardwareBase.h。
我可以推断这可能是一个“AudioBox”是通过插件访问的音频设备。但这似乎没有在任何地方说明。
我有一部分代码需要优化-所以我已经完成了直接调度。直接分派可以工作(如代码执行,执行正确的操作且不会崩溃),但是ARC某种程度上失去了对客户端对象的跟踪,并且永远也不会被释放。标准版本的调度也适用,并且也不会泄漏。如何修复直接发送版本?
标准发布版本:
Client * client;
client = [Client newClientForServerSocket: serverSocket];
Run Code Online (Sandbox Code Playgroud)
直接发送版本:
Client * client;
Class clientClass = Client.class;
client = (*IMP_newClientForServerSocket)(clientClass,@selector(newClientForServerSocket:),serverSocket);
Run Code Online (Sandbox Code Playgroud)
(附带说明:奇怪的是,如果我将Client.class直接粘贴在调度的“ self”参数中,则调度崩溃。可能是一个提示。)