2014-06-21 38 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> 

有可能是该方法的调用方式的问题。

返回“扩展方法”。你是什​​么意思?只需将它作为一个函数,将其作为方法添加到类中即可。