在主机应用程序 (iOS) 中检测 AUv3 失效
Posted
技术标签:
【中文标题】在主机应用程序 (iOS) 中检测 AUv3 失效【英文标题】:Detecting AUv3 invalidations in a host app (iOS) 【发布时间】:2020-11-16 15:36:11 【问题描述】:我正在开发一个 AUv3 主机应用程序,我希望在加载的音频单元由于某种原因崩溃(失效)时通知用户。我查看了 Apple 关于 AUAudioUnit 的文档,但找不到任何有关如何从主机应用中检测音频单元 (AUv3) 失效的信息。
有人知道怎么做吗?
谢谢
【问题讨论】:
也许你可以抓住kAudioComponentInstanceInvalidationNotification
并采取相应的行动。这通常是主机应用程序的重新启动。
非常感谢@OI。这完美无瑕:)))
【参考方案1】:
在设置您的 AudioEngine 时,您可以观察 kAudioComponentInstanceInvalidationNotification
以确定其音频组件实例是否稍后失效。
[[NSNotificationCenter defaultCenter] addObserverForName:kAudioComponentInstanceInvalidationNotification object:nil queue:nil usingBlock:^(NSNotification *note)
AUAudioUnit *auUnit = (AUAudioUnit *)note.object;
NSValue *val = note.userInfo[@"audioUnit"];
AudioUnit auAddress = (AudioUnit)val.pointerValue;
NSLog(@"AudioComponent Invalidation of Unit:%@ with Address:%p", auUnit, auAddress);
];
请记住,您可能已经收到通知,但组件最终陷入了死锁。因此,当您试图从中恢复时,您可能不得不关闭整个主机应用程序。
【讨论】:
再次感谢@OI。所以实际上这让我想到了以下问题。有没有办法重新加载 AUAudioUnit,或者我应该简单地从音频引擎中删除无效的,然后实例化一个新的? 我会说:重新加载是根据定义无效和删除+实例新鲜。 :)以上是关于在主机应用程序 (iOS) 中检测 AUv3 失效的主要内容,如果未能解决你的问题,请参考以下文章