簡體   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