EXC_BAD_ACCESS uint32_t

时间:2014-06-21 04:55:08

标签: c++ objective-c objective-c++

我试图在Obj C中对NSData实现扩展方法。扩展方法调用cpp lib方法。

以下是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错误。我确定这与指针或引用的不当使用有关,但我无法弄明白。提前谢谢。

1 个答案:

答案 0 :(得分:0)

以下代码的代码工作正常:

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

NSLog输出:

d: <fa0accaf>  

调用方法的方式可能存在问题。

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