我正在嘗試創建一個使用來自統一的音頻流的項目。爲此,我正在開發一個插件。Objective-C - BAD ACCESS EXC
在錄製音頻時沒有問題,我通過websocket以base64字符串發送數據。 然後從xcode中捕獲它並將其轉換爲NSDATA,這就是問題所在。起初沒有問題,但過了一會兒,Xcode顯示錯誤EXC_BAD_ACCESS,我無法繼續將NSDATA複製到緩衝區中。
這是代碼。
#import "AudioProcessor.h"
#pragma mark Playback callback
static OSStatus playbackCallback(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,
const AudioTimeStamp *inTimeStamp,
UInt32 inBusNumber,
UInt32 inNumberFrames,
AudioBufferList *ioData) {
AudioProcessor audioProcessor = (AudioProcessor) inRefCon;
// copy buffer to audio buffer which gets played after function return
if(ioData->mNumberBuffers > 0) {
AudioBuffer buffer = ioData->mBuffers[0];
// get the data from Unity
NSString *inputData = audioProcessor.getInputData;
if(inputData && ![inputData isKindOfClass:[NSNull class]])
{
//here it's the problem.
NSData *data = [[NSData alloc] initWithBase64EncodedString:inputData options:0];
memcpy(buffer.mData, data.bytes, data.length);
buffer.mDataByteSize = (int) data.length;
free(data);
}
return noErr;
}
#pragma mark controll stream
-(void)setInputData:(NSString *)datosValue
{
inputData = datosValue;
}
-(NSString*)getInputData
{
return inputData;
}
如果有人知道如何可以做到,這樣應用程序沒有關閉,我將不勝感激。
最簡單的方法來檢測你錯在哪裏,從xcode啓用殭屍對象。通常是因爲嘗試訪問已經發布的對象而發生的。 – Govaadiyo