我正在使用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;
}
,如果我使用断点逐步执行此代码,它会起作用! 但是,我认为某个时候图像还不能使用?!但是我找不到原因。
我试过的
imageRef
和uiImage
作为局部变量(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/