我在CoreAudio中调用 AudioObjectGetPropertyDataSize 时出现问题。 Github处的OBJ-C项目尝试获取输入设备的数量,并且在第一次调用AudioObjectGetPropertyDataSize时,返回的大小= 24除以4的元素大小,结果只有6个设备,我有11个。 / p>
我在一个简单的Swift项目中重写了有问题的代码,它返回了正确的44大小,这导致了我拥有的11个设备。
然后我为AudioHandle创建了一个新的Swift文件,并将OBJ-C设置为Swift桥接,仅发现被调用的新Swift代码返回相同的错误大小24.
我创建了两个独立的项目,并将它们传递给了一些朋友进行测试。
他们报告说他们无法复制我的问题。
我目前的代码如下:
func getNumberOfDevices() -> UInt32 {
var propertySize: UInt32 = 0
var propertyAddress = AudioObjectPropertyAddress(
mSelector: AudioObjectPropertySelector(kAudioHardwarePropertyDevices),
mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal),
mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster))
_ = AudioObjectGetPropertyDataSize(AudioObjectID(kAudioObjectSystemObject), &propertyAddress, 0, nil, &propertySize)
return propertySize / UInt32(MemoryLayout<AudioDeviceID>.size)
}
返回值为24的值而不是正确的值44。
任何有关正在发生的事情的想法或想法都会受到赞赏。
目前正在运行MacOS 10.13.4,Xcode 10和Xcode 9.3都有相同的结果。