2013-04-24 67 views
0

我在AudioUnits(http://www.cocoawithlove.com/2010/10/ios-tone-generator-introduction-to.html)上找到了一个很棒的教程,我从此开始研究我的系统;但是,我无法从RenderTone C函数调用Objective-C方法。如何从AudioUnits C函数调用Objective-C方法? (iOS)

在相同的M文件RenderTone,我有以下方法:

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

当我尝试并调用从RenderTone功能这种方法时,Xcode给了我下面的错误:“未声明的标识符的使用“信号发生器”。”为什么不能看到这个方法,如果它在同一个文件中?

感谢您的阅读。

+1

Apple建议不要在Audio Unit回调中发送Objective C消息。最好坚持使用纯C函数调用。 – hotpaw2 2013-04-25 03:57:43

+0

@ hotpaw2好的,谢谢,很高兴知道。 (我希望根据用户与UI的交互来改变声音。) – Rogare 2013-05-03 21:17:20

回答

0

RenderTone()功能,

ToneGeneratorViewController *viewController = (ToneGeneratorViewController *)inRefCon; 

是您的视图控制器的情况下,这样你就可以打电话给你的方法

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

RenderTone()内。

@interface ToneGeneratorViewController() 
- (Float32)signalGenerator:(int)sample withSampleRate:(int)Fs andFrequency:(float)frequency; 
@end 
:为了让编译器知道的方法,在这一点上, 您可以使用类扩展要么

  • 移动RenderTone()@implementation ToneGeneratorViewController块内,或
  • 添加函数原型

+0

@Rogare:不客气。 – 2013-05-03 21:16:43