C++ EXC\u坏访问单元32\u t

C++ EXC\u坏访问单元32\u t,c++,objective-c,objective-c++,C++,Objective C,Objective C++,我试图在Obj C中的NSData上实现一个扩展方法。该扩展方法调用一个cpp lib方法 以下是cpp方法的方法签名: - (NSData *)PROCESS { uint32_t result; process((char*)&result); // At this point result shows 2949384954 as the value NSData *d = [NSData dataWithBytes:&result le

我试图在Obj C中的NSData上实现一个扩展方法。该扩展方法调用一个cpp lib方法

以下是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;
}
void processchar*结果{}

下面是调用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\u BAD\u访问错误。我确信这与指针或引用的不当使用有关,但我就是搞不清楚。提前感谢。

以下代码工作正常:

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

d: <fa0accaf>  
调用方法的方式可能有问题


返回到扩展方法。你这是什么意思?只需将此函数作为方法添加到类中。

记录结果并将其添加到问题中。最好用十六进制。当你遇到问题时,把它分解,找出它到底在哪里。发布eh准确的错误消息,复制和过去以及任何堆栈跟踪。@Zaph yes。很抱歉我来自.net背景。为什么要实现一个类别,通常最好只实现一个类的方法。按照惯例,方法名是以小写字母开头的驼峰大小写,类名是以大写字母开头的驼峰大小写,在Objective-C中@Zaph 0xafcc0afa就是我所期望的。但当进程返回NSData*值时,它会弹出EXC_BAD_访问错误。您确定进程写入的字节数不超过4字节吗?