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