iOS上的ZBar内存泄漏?

mbp*_*pro 10 ios zbar-sdk

我对ZBar扫描性能非常满意,但是如果完全重要的话,我在ARC下运行的项目遇到了一个大问题.

也就是说,似乎存在严重的内存泄漏,随着readerView的每个新显示器呈指数级增长.在大约10倍的内存使用量开始呈指数级增长并且大约20倍的扫描程序变得无法使用之后.

我见过使用相同版本构建的示例,并且没有问题.我也在readerView上尝试了方法flushCache,但它没有帮助.

这是一个补丁:http://sourceforge.net/p/zbar/patches/36/,但我没有看到任何代码.由于我没有完整的源代码,我找不到它......

有没有人有同样的问题?

Ben*_*ton 28

我发现ZBar 0.10的当前稳定版本存在完全相同的问题,并通过继承ZBarReaderViewController并覆盖loadView方法来修复它.我现在可以一遍又一遍地运行扫描仪而不会让记忆变得疯狂.

这是完整的代码:

...标题

#import <Foundation/Foundation.h>
#import "ZBarReaderViewController.h"

@interface CVZBarReaderViewController : ZBarReaderViewController
@end
Run Code Online (Sandbox Code Playgroud)

..和实施

#import "CVZBarReaderViewController.h"

@implementation CVZBarReaderViewController 
- (void) loadView
{
    self.view = [[[UIView alloc] initWithFrame: CGRectMake(0, 0, 320, 480)] autorelease];
}
@end
Run Code Online (Sandbox Code Playgroud)

请记住将.m文件标记为非弧形.转到项目设置/目标/构建阶段/编译源并使用-fno-objc-arc标记CVZBarReaderViewController.m.


Vik*_*Vik 7

实际上这里是补丁的代码

diff --git a/iphone/ZBarReaderViewController.m b/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
Run Code Online (Sandbox Code Playgroud)

它是一个.diff文件,如果你有权访问repo,你可以很容易地应用补丁,但由于这是一个很短的,你也可以手动执行.你只需要autorelease在类的loadView方法中添加一个调用ZBarReaderViewController