iOS上的ZBar内存泄漏?

iOS上的ZBar内存泄漏?,ios,zbar-sdk,Ios,Zbar Sdk,我对ZBar扫描性能非常满意,但是我在一个ARC下运行的项目中遇到了一个大问题 也就是说,似乎存在严重的内存泄漏,并且随着readerView的每一次新显示都呈指数增长。大约10倍的内存使用率开始呈指数增长,大约20倍的扫描程序变得不可用 我已经看到了使用相同版本构建的示例,并且没有任何问题。我还在readerView上尝试了方法flushCache,但没有任何帮助 有一个补丁:,但我没有看到任何代码。由于我没有完整的源代码,我找不到它 有人遇到过同样的问题吗?实际上这是补丁的代码 diff -

我对ZBar扫描性能非常满意,但是我在一个ARC下运行的项目中遇到了一个大问题

也就是说,似乎存在严重的内存泄漏,并且随着readerView的每一次新显示都呈指数增长。大约10倍的内存使用率开始呈指数增长,大约20倍的扫描程序变得不可用

我已经看到了使用相同版本构建的示例,并且没有任何问题。我还在readerView上尝试了方法flushCache,但没有任何帮助

有一个补丁:,但我没有看到任何代码。由于我没有完整的源代码,我找不到它


有人遇到过同样的问题吗?

实际上这是补丁的代码

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

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

我发现了临时(我希望是临时)解决方法。我没有使用ZBarReaderViewController,而是直接使用ZBarReaderView和另一个委托来处理结果。

我发现当前稳定版本的ZBar 0.10存在完全相同的问题,并通过子类化ZBarReaderViewController和重写loadView方法来修复它。我现在可以一遍又一遍地运行扫描仪,而不会让内存发疯

以下是完整的代码:

。。。标题

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

@interface CVZBarReaderViewController : ZBarReaderViewController
@end

请记住将.m文件标记为非圆弧文件。转到项目设置/Target/Build Phases/Compile Sources并用-fno objc arc标记CVZBarReaderViewController.m。

谢谢帮助,但这就是问题所在-除了.h头文件,我没有目标C源代码,所以我无法应用此修补程序。我在开发者页面上只能看到ZBARDK文件,其中包含头文件和静态库。我看到:(那么你应该如何解决这个问题呢?到目前为止,这是最简单的解决方案。我自己不必重建库。这帮助我在截止日期前完成了一个重要的构建。谢谢!我们需要如何启动查看器?仍然使用
ZBarReaderViewController*reader=[[ZBarReaderViewController alloc]init]autorelease]
或使用
CVZBarReaderViewController
?使用CVZBarViewController.:-@BenClayton它工作起来很有魅力!非常感谢
#import "CVZBarReaderViewController.h"

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