当前位置:  开发笔记 > Android > 正文

UIWebView和NSURL的内存泄漏:已经花了好几天试图解决它们

如何解决《UIWebView和NSURL的内存泄漏:已经花了好几天试图解决它们》经验,为你挑选了1个好方法。

我已经找到了很多关于如何解决iPhone Obj C代码内存泄漏的信息.最后两次泄漏让我感到困惑,我可能会忽略一些事情.也许你可以发现它.

Instruments报告以下代码的2个泄漏(UIViewController子类的一部分):

(1)  UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0.0,
                          0.0,
                          self.view.bounds.size.width,
                          self.view.bounds.size.height - LOWER_VERT_WINDOW_MARGIN)];
(2)  webView.scalesPageToFit = YES;
(3)  webView.dataDetectorTypes = UIDataDetectorTypeNone;
(4) 
(5)  NSURL *url = [NSURL fileURLWithPath:self.fullPathFileName isDirectory:NO];
(6)  NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:url];
(7)  [webView loadRequest:urlRequest];
(8)  [urlRequest release], urlRequest = nil;
(9)  [self.view addSubview:webView];
(10) [webView release], webView = nil;

仪器声称在第1行泄漏了128个字节,在第4行泄漏了256个字节.不知道它是否意味着第3行或第5行.

有人知道我在忽视什么吗?



1> Mobs..:

1)确保您在设备而不是模拟器上进行泄漏测试

2)如果失败了,请尝试通过将此添加到app appidate中的applicationDidFinishLaunching来设置url缓存:

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
[sharedCache release];


你让我今天一整天都感觉很好!连接设备,启动仪器,果然:上面的泄漏不再发生.我只说两次泄漏,我的软件没有涉及(不在堆栈跟踪中),所以不用担心.谢谢!从来不知道模拟器和设备之间在泄漏方面存在这样的差异.
推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有