Утечки памяти с UIWebView и NSURL: уже несколько дней пытались их решить - PullRequest
1 голос
/ 01 декабря 2009

Я уже нашел много информации о том, как решить утечки памяти для кода 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;

Instruments утверждает, что в строке 1 просачивается 128 байтов, а в строке 4 - 256 байтов. Не знаю, означает ли это строку 3 или строку 5.

Кто-нибудь знает, что я пропускаю?

1 Ответ

5 голосов
/ 01 декабря 2009

1) Убедитесь, что вы тестируете утечку на устройстве, а не на симуляторе

2) Если это не удастся, попробуйте установить кэш URL, добавив его в applicationDidFinishLaunching в делегате приложения:

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