小编paw*_*ill的帖子

CoreAudio:与“AudioDevice”相比,“AudioBox”是什么

头文件CoreAudio/AudioHardware.h引用了类“ AudioBox”,表示它与类“ AudioDevice”不同但相关。搜索 developer.apple.com 没有找到 AudioBox。不幸的是,有一种名为 AudioBox™ 的商业产品,它使得谷歌搜索这个词的收益非常低。

以下是包含参考文献的评论:

kAudioHardwarePropertyBoxList
Run Code Online (Sandbox Code Playgroud)

表示 系统当前提供的所有AudioBox对象的AudioObjectID数组。

kAudioHardwarePropertyTranslateUIDToBox
Run Code Online (Sandbox Code Playgroud)

此属性获取与 具有给定 UID的 AudioBox 对应的 AudioObjectID。UID 通过限定符作为 CFString 传入,而 AudioBox 的 AudioObjectID 作为属性数据返回给调用者。请注意,如果 UID 不引用任何AudioBox es,则不会返回错误。相反,该属性将kAudioObjectUnknown作为该属性的值返回。

头文件:AudioHardwareBase.h包含大量对 AudioBox 的引用,但没有定义或解释它,尽管它将它与 AudioDevice相关联

通过 XCode 搜索文档只会让我回到 AudioHardwareBase.h。

我可以推断可能是一个“AudioBox”是通过插件访问的音频设备。但这似乎没有在任何地方说明。

那么什么是AudioBox?

macos core-audio

6
推荐指数
1
解决办法
175
查看次数

为什么在ARC下直接发布版本会泄漏?(以及如何解决?)

我有一部分代码需要优化-所以我已经完成了直接调度。直接分派可以工作(如代码执行,执行正确的操作且不会崩溃),但是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”参数中,则调度崩溃。可能是一个提示。)

objective-c selector automatic-ref-counting

0
推荐指数
1
解决办法
40
查看次数