2014-06-21 42 views
0

我正在嘗試在Obj C中的NSData上實現擴展方法。擴展方法調用cpp lib方法。EXC_BAD_ACCESS uint32_t

這裏是CPP方法的方法簽名:

void process(char *result) { }

這裏是擴展方法調用CPP方法:

- (NSData *)PROCESS 
{ 
    uint32_t result; 

    process((char*)&result); 

    // At this point result shows 2949384954 as the value 

    NSData *d = [NSData dataWithBytes:&result length:sizeof(result)]; 

    return d; 
} 

當我使用PROCESS並分配返回(NSData的*),我得到一個EXC_BAD_ACCESS錯誤。我相信這與指針或引用的不當使用有關,但我無法弄清楚。提前致謝。

+0

記錄結果並將其添加到問題中。十六進制是最好的。當您遇到問題時,請將其分解以確切確定其位置。發佈精確的錯誤消息,複製和過去以及任何堆棧跟蹤。 – zaph

+0

@Zaph是的。抱歉。我來自.net背景。 – a432511

+0

你爲什麼要實現一個類,通常最好只實現一個類的方法。另外按照慣例,方法名稱是以小寫字母開頭的駱駝大小寫,並且類名稱是在Objective-C中以大寫字母開頭的駱駝大小寫。 – zaph

回答

0

下面的代碼的代碼工作正常:

uint32_t result = 2949384954; 
NSData *d = [NSData dataWithBytes:&result length:sizeof(result)]; 
NSLog(@"d: %@", d); 

的NSLog輸出:

d: <fa0accaf> 

有可能是該方法的調用方式的問題。

返回「擴展方法」。你是什​​麼意思?只需將它作爲一個函數,將其作爲方法添加到類中即可。