zbar IOS屏幕冻结

时间:2013-11-26 09:34:40

标签: iphone ios7 barcode-scanner zbar

我在我的iphone应用程序中集成zbar,下面是扫描条形码的代码。

ZBarReaderViewController *reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
reader.supportedOrientationsMask = ZBarOrientationMaskAll;

ZBarImageScanner *scanner = reader.scanner;
[scanner setSymbology: ZBAR_I25
                   config: ZBAR_CFG_ENABLE
                       to: 0];

[self presentModalViewController: reader
                            animated: YES];

完成后,我将执行以下操作。

- (void) imagePickerController: (UIImagePickerController*) reader
 didFinishPickingMediaWithInfo: (NSDictionary*) info
{
    id<NSFastEnumeration> results =
    [info objectForKey: ZBarReaderControllerResults];
    ZBarSymbol *symbol = nil;
    for(symbol in results)

        break;
    // Do what ever u want
    [reader dismissModalViewControllerAnimated: YES];
}

这个的问题是,我在第一个实例中使用IOS7及其扫描完美,但是,对于第二个实例,在扫描之后,它不会继续进行,甚至取消按钮也不会工作并且屏幕保持在相机中模式。我读到了IOS7的cpu和内存问题,但无法弄清楚如何在我的情况下纠正它。请提供宝贵的意见。

1 个答案:

答案 0 :(得分:1)

好的,首先,请忽略我对子类化ZBarReaderView的评论。不久之前,我遇到了问题,即使我记得尝试过,但这不是我解决的问题。我有几点建议。

presentViewController:animated:之后的顶部代码中尝试将指针设置为reader为nil。我做了以下事情:

[self presentViewController:reader animated:YES completion:nil];
reader = nil;

您正在呈现的视图控制器将保留在阅读器上,因此不必担心丢失参考。我认为这实际上有助于记忆。 (并且,当你遇到问题时,事情首先起作用,然后在不止一次这样做之后失败,这通常是一个记忆问题。)

除此之外,在顶部位,我关闭所有符号,然后只启用我感兴趣的符号。例如,我可能会这样做:

// Enable only ISBN-13 & ISBN-10 barcodes
[scanner setSymbology:0 config:ZBAR_CFG_ENABLE to:0];
[scanner setSymbology:ZBAR_EAN13 config:ZBAR_CFG_ENABLE to:1];
[scanner setSymbology:ZBAR_ISBN10 config:ZBAR_CFG_ENABLE to:1];

尝试这两个建议,特别是关于将引用设置为nil的第一个建议。这可能有所帮助。