0

我正在尝试初始化一个ZXingWidgetController可以同时适用于 2D(QRCode、DataMatrix)和 1D Barcodes(UPC、EAN)我的问题是这是否可能。

这是我使用的代码

ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];

QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
DataMatrixReader* dmReader = [[DataMatrixReader alloc] init];

MultiFormatUPCEANReader* upceanReader = [[MultiFormatUPCEANReader alloc] init];
MultiFormatOneDReader* oneDReader = [[MultiFormatOneDReader alloc] init];

NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,dmReader,upceanReader,oneDReader, nil];

[qrcodeReader release];
[dmReader release];
[upceanReader release];
[oneDReader release];

widController.readers = readers;
[readers release];

如果我OneDMode:YES进行初始化,则应用程序崩溃并出现以下错误

-[Not A Type _cfTypeID]: message sent to deallocated instance 0xded0270

但是,如果我OneDMode:NO进行初始化,该应用程序不会崩溃,但它也不适用于条形码,并且仅适用于 QRCodes 和 2D 数据矩阵代码。

你能告诉我这是否可能,如果是,怎么做?

提前感谢任何帮助。

4

2 回答 2

0

您应该使用 svn 中的中继代码。自 2.0 版本以来,已经有一些 1D 更改。

但另请参阅“为什么一维码在 iOS 设备上不起作用?”这个问题。在ZXing FAQ中。

于 2012-09-12T19:54:18.087 回答
0

据我所知,需要告知 ZXing 是在寻找 1D 还是 2D 代码,这就是 OneDMode 变量存在的原因。

除此之外,看起来您遇到的真正问题在于内存管理。任何时候你看到一条消息被发送到一个释放的实例,这意味着你太早地释放了一些东西。我强烈建议使用 ARC 而不是手动内存管理。

您的特定错误通常是人们在转换为 ARC 后看到的,所以我不确定您实际处于什么状态。但是,您可能想看看这个其他问题,看看它是否可以帮助您找出真正的问题是。

-[Not A Type retain]:消息发送到已释放的实例

于 2012-09-12T12:51:45.357 回答