我正在iOS中进行一些Core Audio编程,并且遇到了一种情况,我需要在一些C回调代码中使用我在Objective C中声明的变量。缓冲区变量必须可由 Objective C 和 C 语法访问,但在 C 语法中存在错误提示“使用未声明的标识符缓冲区”。
我该如何解决这个问题?提前致谢。
码头。
变量是缓冲区,在 RIORecerdingViewController.h 中声明如下:
@interface RIORecoerdingViewController : UIViewController <AVAudioSessionDelegate> {
OSStatus status;
AudioComponentInstance audioUnit;
AudioStreamBasicDescription audioFormat;
RIO rio;
IBOutlet UIButton *button;
BOOL isPlaying;
Float64 graphSampleRate;
NSString *destinationFilePath;
CFURLRef destinationURL;
ExtAudioFileRef outExtAudioFile;
// New
AUGraph theGraph;
TPCircularBuffer buffer;
}
我希望在 C 回调函数中使用它
static OSStatus recordingCallback(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData) {
if (rio->recording)
{
TPCircularBufferProduceBytes(&buffer, abl.mBuffers[0].mData, inNumberFrames * 2 * sizeof(SInt32)); //&buffer has an error "Use of undeclared identifier buffer"
}
return noErr;
}