繁体   English   中英

Objective-C-错误的访问权限EXC

[英]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;  
}  

如果有人知道如何做到这一点,以致应用程序无法关闭,我将不胜感激。

首先,请遵循变量名以小写字母开头的命名约定。

发生错误是因为NSData的实例是对象/指针,您必须添加*

NSData *data = [[NSData alloc] init....

此外,强烈建议例如使用点符号访问属性

data.bytes
data.length

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM