我对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.
实际上这里是补丁的代码
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
归档时间: |
|
查看次数: |
2954 次 |
最近记录: |