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

San*_*ong 1 iphone memory-leaks objective-c

我已经找到了很多关于如何解决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;
Run Code Online (Sandbox Code Playgroud)

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

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

Mob*_*obs 5

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

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

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
[sharedCache release];
Run Code Online (Sandbox Code Playgroud)

  • 你让我今天一整天都感觉很好!连接设备,启动仪器,果然:上面的泄漏不再发生.我只说两次泄漏,我的软件没有涉及(不在堆栈跟踪中),所以不用担心.谢谢!从来不知道模拟器和设备之间在泄漏方面存在这样的差异. (2认同)