Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode中的EXC\u错误\u访问错误_Xcode_Nsstring_Uiimageview_Uiimage_Tesseract - Fatal编程技术网

Xcode中的EXC\u错误\u访问错误

Xcode中的EXC\u错误\u访问错误,xcode,nsstring,uiimageview,uiimage,tesseract,Xcode,Nsstring,Uiimageview,Uiimage,Tesseract,我真的需要你们的帮助,我用Xcode运行我的程序,它成功了,但后来 它向我显示此错误:**线程1:程序在我的程序行上收到信号:“EXC\u BAD\u ACCESS”,我在下面有**粗体: - (NSString *) ocrImage: (UIImage *) uiImage { CGSize imageSize = [uiImage size]; double bytes_per_line = CGImageGetBytesPerRow([uiImage CGImage]

我真的需要你们的帮助,我用Xcode运行我的程序,它成功了,但后来

它向我显示此错误:**线程1:程序在我的程序行上收到信号:“EXC\u BAD\u ACCESS”,我在下面有**粗体

- (NSString *) ocrImage: (UIImage *) uiImage
{
    CGSize imageSize = [uiImage size];
    double bytes_per_line   = CGImageGetBytesPerRow([uiImage CGImage]);
    double bytes_per_pixel  = CGImageGetBitsPerPixel([uiImage CGImage]) / 8.0;

    CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider([uiImage CGImage]));
    const UInt8 *imageData = CFDataGetBytePtr(data);

    // this could take a while. maybe needs to happen asynchronously.

    **char* text = tess->TesseractRect(imageData,(int)bytes_per_pixel,(int)bytes_per_line, 0, 0,(int) imageSize.height,(int) imageSize.width);**

    // Do something useful with the text!
    NSLog(@"Converted text: %@",[NSString stringWithCString:text encoding:NSUTF8StringEncoding]);

    return [NSString stringWithCString:text encoding:NSUTF8StringEncoding];
}

谢谢你,伙计。

确保这里的
imageData
不为空。这是你看到的最常见的原因。您应该重新考虑与您的问题更相关的标题,并关注stacktrace和传递给
TesseractRect()
的所有变量


另一个主要的可能性是<>代码> TESS < /C> >(无论是什么)是一个坏指针,或者不是正确C++类的一部分(我假设这是ObjuleC++),你不清楚其中的任何一个。

确保代码< > IMADATA < /C> >这里不为NULL。这是你看到的最常见的原因。您应该重新考虑与您的问题更相关的标题,并关注stacktrace和传递给

TesseractRect()
的所有变量


另一个主要的可能性是<>代码> TESS < /C>(无论是什么)是一个坏指针,或者那不是正确C++类的一部分(我假设这是Objul-C++,你不清楚其中的任何一个)。.

你能在设置了
tess
的地方发布代码吗?你能在设置了
tess
的地方发布代码吗?你有没有检查图像数据为空的示例?我试过imageData==null imageData==[NSNull null null]imageData==nil无任何效果。我找不到阻止此崩溃发生的方法。
imageData==NULL
是对它是否为NULL的测试。如果它不是空的,那么这不是你的问题。我说这是这类车祸最常见的原因,而不是说这是必然的原因。正如我所指出的,
tess
也可能是无效指针。不清楚苔丝来自哪里。如果你的内存管理是草率的;那你应该花点时间清理一下。避免草率内存管理的最佳方法是对IVAR使用访问器方法。此外,还不清楚您在哪里调用CFRelease(数据)。是吗?你有没有检查图像数据是否为空的示例?我已经尝试过imageData==null imageData==NSNull null]imageData==nil没有任何效果。我找不到阻止此崩溃发生的方法。
imageData==NULL
是对它是否为NULL的测试。如果它不是空的,那么这不是你的问题。我说这是这类车祸最常见的原因,而不是说这是必然的原因。正如我所指出的,
tess
也可能是无效指针。不清楚苔丝来自哪里。如果你的内存管理是草率的;那你应该花点时间清理一下。避免草率内存管理的最佳方法是对IVAR使用访问器方法。此外,还不清楚您在哪里调用CFRelease(数据)。你是吗?
- (NSString *)readAndProcessImage:(UIImage *)uiImage
{
  CGSize imageSize = [uiImage size];
  int bytes_per_line = (int)CGImageGetBytesPerRow([uiImage CGImage]);
  int bytes_per_pixel = (int)CGImageGetBitsPerPixel([uiImage CGImage]) / 8.0;

  CFDataRef data =
      CGDataProviderCopyData(CGImageGetDataProvider([uiImage CGImage]));
  const UInt8 *imageData = CFDataGetBytePtr(data);

  // this could take a while. maybe needs to happen asynchronously?
  char *text = tess.TesseractRect(imageData, bytes_per_pixel, bytes_per_line, 0,
                                  0, imageSize.width, imageSize.height);

  NSString *textStr = [NSString stringWithUTF8String:text];

  delete[] text;
  CFRelease(data);
  return textStr;
}