我在 ObjC++ 包装器类 (.mm) 中使用以下代码,我注意到如果我通过引用捕获代码会随机失败并出现 EXC_BAD_ACCESS。另一方面,如果我捕捉到对象(“std::runtime_error 错误”),它似乎没问题。
我是 ObjC 的新手,我知道 ObjC 中不使用引用,但我希望编译器在这种情况下能够正常工作。我错过了什么吗?
catch(std::runtime_error &error) {
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:[NSString stringWithCString:error.what() encoding:[NSString defaultCStringEncoding]]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
});