【发布时间】:2014-02-06 23:50:23
【问题描述】:
我有一个在 iOS 中使用 ZBar 扫描插件的 PhoneGap 应用。它允许我使用扫描仪几次,但经过几次尝试,下一次单击扫描按钮调用插件会导致应用程序冻结 30 秒到 5 分钟之间的任何时间。然后它将再次恢复正常功能。
只有在安装了 iOS7 的设备上才会发生这种情况。我已经测试过了。
我注意到 xcode 给了我“收到内存警告”的输出消息。可能有某种关联。
有什么想法吗?
【问题讨论】:
我有一个在 iOS 中使用 ZBar 扫描插件的 PhoneGap 应用。它允许我使用扫描仪几次,但经过几次尝试,下一次单击扫描按钮调用插件会导致应用程序冻结 30 秒到 5 分钟之间的任何时间。然后它将再次恢复正常功能。
只有在安装了 iOS7 的设备上才会发生这种情况。我已经测试过了。
我注意到 xcode 给了我“收到内存警告”的输出消息。可能有某种关联。
有什么想法吗?
【问题讨论】:
根据this 问题,ZBarReaderViewController 的view 属性被保留,因此泄漏。
如 ZBar SDK 文档 here 中所述,当您初始化 ZBarReaderViewController 时,将阅读器的视图属性设置为 autorelease:
- (IBAction) scanButtonTapped
{
// ADD: present a barcode reader that scans from the camera feed
ZBarReaderViewController *reader = [ZBarReaderViewController new];
// Fixes memory leak for the view property.
[reader.view autorelease];
reader.readerDelegate = self;
reader.supportedOrientationsMask = ZBarOrientationMaskAll;
ZBarImageScanner *scanner = reader.scanner;
// TODO: (optional) additional reader configuration here
// EXAMPLE: disable rarely used I2/5 to improve performance
[scanner setSymbology: ZBAR_I25
config: ZBAR_CFG_ENABLE
to: 0];
// present and release the controller
[self presentModalViewController: reader
animated: YES];
[reader release];
}
【讨论】: