我正在使用XZINGObjC框架来创建EAN-Barcode-Image。按照文档,我这样做

 //in viewDidAppear

 //XZING: create Matrix
 NSString* eanString = @"1234567890123";  //sth. like that
 ZXBitMatrix* result = [writer encode:eanString
                              format:kBarcodeFormatEan13
                               width:500
                              height:500
                               error:&error];
if (result) {
      //XZING: convert matrix to CGImageRef
      CGImageRef imageRef = [[ZXImage imageWithMatrix:result] cgimage];

      //CRASHLINE HERE!! (this is NOT in the XZING documentation, but i cannot figure out the issue!)
      UIImage* uiImage = [[UIImage alloc] initWithCGImage:imageRef];  //<--CRASH: EXC_BAD_ACCESS

      if(image != nil){
          //assigning image to ui
          self.barCodeImageView.image = uiImage;
      }

,如果我使用断点逐步执行此代码,它会起作用! 但是,我认为某个时候图像还不能使用?!但是我找不到原因。

我试过的
  • 使用imageRefuiImage作为局部变量(EXC_BAD_ACCESS CRASH)
  • 在后台线程(EXC_BAD_ACCESS CRASH)中尝试了该操作

  • 同样在这里,如果我使用断点并逐步遍历代码,则每种解决方案都可以使用。我这是什么错有任何想法吗?提前致谢!

    最佳答案

    经过一些尝试和错误编程后,我可以通过替换以下几行来解决此问题

      CGImageRef imageRef = [[ZXImage imageWithMatrix:result] cgimage];
      UIImage* uiImage = [[UIImage alloc] initWithCGImage:imageRef];  //<--CRASH
    


     UIImage* uiImage = [[UIImage alloc] initWithCGImage:[[ZXImage imageWithMatrix:result] cgimage]];
    

    还是我不知道为什么?! 我很确定如果尝试将其转换为CGImageRef,内存中没有东西,或者UIImage尚未准备好。

    关于objective-c - objective-c : How to convert CGImageRef to UIImageView?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23609593/

    10-11 14:51