iOS上的ZBar内存泄漏?
我对ZBar的扫描性能非常满意,但是在一个运行在ARC之下的项目中遇到了一个很大的问题。
也就是说,似乎有一个严重的内存泄漏,随readerView的每一个新的显示指数上升。 在一些10倍的内存使用量开始呈指数级增长,20倍左右的扫描程序变得无法使用。
我见过用相同的版本构build的例子,没有问题。 我也在readerView上尝试了方法flushCache,但是没有帮助。
这是一个补丁: http : //sourceforge.net/p/zbar/patches/36/ ,但我没有看到它的任何代码。 由于我没有完整的源代码,我无法find它…
有没有人有同样的问题?
我发现与当前稳定版本的ZBar 0.10完全相同的问题,并通过inheritanceZBarReaderViewController并重写loadView方法来修复它。 我现在可以反复运行扫描仪,而不会让内存变得疯狂。
以下是完整的代码:
…标题
#import <Foundation/Foundation.h> #import "ZBarReaderViewController.h" @interface CVZBarReaderViewController : ZBarReaderViewController @end
..和执行
#import "CVZBarReaderViewController.h" @implementation CVZBarReaderViewController - (void) loadView { self.view = [[[UIView alloc] initWithFrame: CGRectMake(0, 0, 320, 480)] autorelease]; } @end
请记住将.m文件标记为非弧形。 转到项目设置/目标/构build阶段/编译源,并用-fno-objc-arc标记CVZBarReaderViewController.m。
其实这里是补丁的代码
diff --git a/iphone/ZBarReaderViewController.mb/iphone/ZBarReaderViewController.m --- a/iphone/ZBarReaderViewController.m +++ b/iphone/ZBarReaderViewController.m @@ -320,8 +320,8 @@ - (void) loadView { - self.view = [[UIView alloc] - initWithFrame: CGRectMake(0, 0, 320, 480)]; + self.view = [[[UIView alloc] + initWithFrame: CGRectMake(0, 0, 320, 480)] autorelease]; } - (void) viewDidLoad
它是一个.diff
文件,如果您有权访问回购,您可以轻松应用该修补程序,但由于这是一个短的,您也可以手动。 你只需要在ZBarReaderViewController
类的loadView
方法中添加一个autorelease
调用
我发现暂时的(我希望是暂时的)解决方法。 而不是使用ZBarReaderViewController我直接使用ZBarReaderView和另一个委托来处理结果。
- 我可以在不增加行高的情况下调整NSAttributedString中的基线吗?
- 当应用程序恢复活动状态时,MPMoviePlayerViewController被解散
- 如何创build一个UIView(在Swift中)的透明圆?
- 使用iOS Storyboard Seque“Model”或“Push”样式时是否存在任何内存泄漏(或对象过度实例化)?
- 我如何编程添加TListBoxItem内的图像?
- 如何使用swift在UICollectionView中获取单元格的索引?
- 为Xcode添加同名的多个资源
- UITableView与NSFetchedResultsController不会第二次加载
- 如何将阴影添加到导航栏而不是默认边框