私は、1からオーディオストリーミングを使用するプロジェクトを作成しようとしています。このために、私はプラグインを開発しています。Objective-C - BAD ACCESS EXC
録音時に音声は問題ありません。私はbase64文字列でwebsocketを通してデータを送信します。 その後、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