不推荐使用 IOBufferDuration 的 AudioSessionAddPropertyListener

AudioSessionAddPropertyListener deprecated for IOBufferDuration

我需要确定我的 RemoteIO 回调何时更改缓冲区大小。在 iOS 7 之前,我们可以使用 AudioSessionAddPropertyListener 添加会话 属性 侦听器,然后使用 属性 kAudioSessionProperty_PreferredHardwareIOBufferDuration。现在已弃用。有替代品吗? AVAudioSession 旨在符合 KVO,但不适用于 IOBufferDurationpreferredIOBufferDuration 属性。

这里的替换是什么?

缓冲持续时间以 frameCount 的形式(与回调缓冲区中的样本数成正比)以已知采样率提供给 RemoteIO 回调。任何其他通知都将与此回调信息异步,因此与实际更改相比可能在错误的时间收到(发生在音频线程中,而不是在 UI 主 运行 循环中)。

但是您的音频回调可能会更改某些可见状态(全局或在参数结构中),在缓冲区持续时间更新后,任何其他轮询线程或使用者线程都可以找到这些状态。