UIWebView не освобождает все живые байты с помощью ARC

В настоящее время я создаю приложение навигационного контроллера в iOS 5.1, которое использует ARC. Мне часто нужно отображать веб-страницы, и я сделал веб-просмотрщик, который представляет собой просто UIWebView с некоторым пользовательским контентом по бокам. Когда пользователь заканчивает просматривать страницу, он нажимает кнопку «Назад», что должно освободить всю память, связанную с пользовательским веб-просмотрщиком. Моя проблема в том, что вся память не освобождается при нажатии кнопки «Назад». Я создал игрушечное приложение(на github ), которое представляет собой всего лишь пару кнопок, каждая из которых имеет первый ответчик, который вызывает другую страницу.

@implementation ViewController
-(IBAction)googlePressed:(id)sender
{
   CustomWebView *customWebView = [[CustomWebView alloc] initWithStringURL:@"http://www.google.com"];
   [self.navigationController pushViewController:customWebView animated:NO];
 }
-(IBAction)ksbwPressed:(id)sender
{
   CustomWebView *customWebView = [[CustomWebView alloc] initWithStringURL:@"http://www.ksbw.com/news/money/Yahoo-laying-off-2-000-workers-in-latest-purge/-/1850/10207484/-/oeyufvz/-/index.html"];
   [self.navigationController pushViewController:customWebView animated:NO];
}
-(IBAction)feedProxyPressed:(id)sender
{
   CustomWebView *customWebView = [[CustomWebView alloc] initWithStringURL:@"http://feedproxy.google.com/~r/spaceheadlines/~3/kbL0jv9rbsg/15159-dallas-tornadoes-satellite-image.html"];
   [self.navigationController pushViewController:customWebView animated:NO];
}
-(IBAction)cnnPressed:(id)sender
{
   CustomWebView *customWebView = [[CustomWebView alloc] initWithStringURL:@"http://www.cnn.com/2012/04/04/us/california-shooting/index.html?eref=rss_mostpopular"];
   [self.navigationController pushViewController:customWebView animated:NO];
}

CustomWebView — это просто UIWebView, связанный в IB со свойством UIWebView.

@implementation CustomWebView

@synthesize webView, link;

- (id)initWithStringURL:(NSString *) stringURL
{
   if (self = [super init]) {
       link = stringURL;
   } 
   return self;
}


- (void)viewDidLoad
{
   [super viewDidLoad];
   NSURL *url = [NSURL URLWithString:link];
   NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
   [webView loadRequest:urlRequest];
}

- (void)viewDidUnload
{
   [super viewDidUnload];
}

Моя проблема в том, что я установил базовую линию кучи в качестве начального ViewController после загрузки всего. Затем я проверяю кучу после загрузки страницы, затем возвращаюсь к ViewController и получаю следующие heapshots :

Heapshots

. Которые показывают, что после каждой серии нажатий на кнопку и возврата к ViewController куча продолжает расти, даже если CustomWebView должен быть полностью вышел.

РЕДАКТИРОВАТЬ:

Пример проекта, описанный выше, можно найти на github

9
задан brendan 11 April 2012 в 22:00
поделиться