如何从AudioUnits C函数调用Objective-C方法? (IOS)

时间:2013-04-24 17:36:57

标签: ios audio core-audio

我找到了一个关于AudioUnits(http://www.cocoawithlove.com/2010/10/ios-tone-generator-introduction-to.html)的精彩教程,我已经开始研究我的系统了。但是,我在使用RenderTone C函数调用Objective-C方法时遇到了麻烦。

在与RenderTone相同的m文件中,我有以下方法:

- (Float32)signalGenerator:(int)sample withSampleRate:(int)Fs andFrequency:(float)frequency{

当我尝试从RenderTone函数调用此方法时,XCode给出了以下错误:“使用未声明的标识符'signalGenerator'。”如果它在同一个文件中,为什么不能看到这个方法呢?

感谢阅读。

1 个答案:

答案 0 :(得分:0)

RenderTone()函数中,

ToneGeneratorViewController *viewController = (ToneGeneratorViewController *)inRefCon;

是视图控制器的实例,因此您可以调用方法

Float32 x = [viewController signalGenerator:13 withSampleRate:14 andFrequency:15];

来自RenderTone()。为了使编译器知道该方法, 你可以

  • RenderTone()区块内移动@implementation ToneGeneratorViewController,或
  • 使用类扩展添加函数原型:

    @interface ToneGeneratorViewController ()
    - (Float32)signalGenerator:(int)sample withSampleRate:(int)Fs andFrequency:(float)frequency;
    @end