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