作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
自实例化一个AVAudioUnit
的方式这是:
[AVAudioUnit instantiateWithComponentDescription:componentDescription options:0 completionHandler:^(__kindof AVAudioUnit * _Nullable audioUnit, NSError * _Nullable error) {
}];
AVAudioUnit
?我试过这个:
[MySubclassOfAVAudioUnit instantiateWithComponentDescription:componentDescription options:0 completionHandler:^(__kindof AVAudioUnit * _Nullable audioUnit, NSError * _Nullable error) {
}];
audioUnit
块中返回的类型仍然是
AVAudioUnit
而不是
MySubclassOfAVAudioUnit
.
AUAudioUnit
带有 Apple 示例代码的子类:
componentDescription.componentType = kAudioUnitType_Effect;
componentDescription.componentSubType = 0x666c7472; /*'fltr'*/
componentDescription.componentManufacturer = 0x44656d6f; /*'Demo'*/
componentDescription.componentFlags = 0;
componentDescription.componentFlagsMask = 0;
AVAudioUnit
子类总是使用我的
AUAudioUnit
.
最佳答案
来自 instantiateWithComponentDescription:completionHandler:
The returned AVAudioUnit instance normally will be of a subclass (AVAudioUnitEffect, AVAudioUnitGenerator, AVAudioUnitMIDIInstrument, or AVAudioUnitTimeEffect), selected according to the component's type.
AVAudioUnit
子类,你只能实例化你的
AUAudioUnit
,包裹在相关的内置AVFoundation
AVAudioUnit
子类(例如
AVAudioUnitEffect
等)。
MyAUAudioUnit
,
AUAudioUnit
的子类要实例化:
#import <AVFoundation/AVFoundation.h>
@interface MyAUAudioUnit : AUAudioUnit {
}
@end
@implementation MyAUAudioUnit
// implement it here
@end
// later
- (void)instantiateMyAUAudioUnitWrappedInAVAudioUnit {
// register it (need only be done once)
AudioComponentDescription desc;
desc.componentType = kAudioUnitType_Effect;
desc.componentSubType = 0x666c7472; /*'fltr'*/
desc.componentManufacturer = 0x44656d6f; /*'Demo'*/
desc.componentFlags = 0;
desc.componentFlagsMask = 0;
[AUAudioUnit registerSubclass:MyAUAudioUnit.class asComponentDescription:desc name:@"MyAU" version:1];
// Instantiate as many times as you like:
[AVAudioUnit instantiateWithComponentDescription:desc options:0 completionHandler:^(AVAudioUnit * audioUnit, NSError *error) {
NSLog(@"AVAudioUnit: %@, error: %@", audioUnit, error);
}];
}
AVAudioUnit
实例化的子类,您必须首先使用
AUAudioUnit
注册它方法:
+[AUAudioUnit registerSubclass:asComponentDescription:name:version:]
关于core-audio - 我如何子类化 AVAudioUnit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40558532/
我是一名优秀的程序员,十分优秀!