Вот несколько странное поведение, которое, я надеюсь, кто-то может подтвердить, является известной ошибкой или предложить обходной путь.
В моем приложении для iPad должны отображаться несколько больших файлов PDF (~ 7 МБ и с большим количеством графики). Путь не менееСопротивление - это, конечно, UIWebView, но мое приложение вылетает после отображения нескольких.Я изолировал поведение в новом проекте и запустил в нем инструменты.
Вот результаты.Кажется, они указывают на то, что в UIWebView происходят плохие утечки.
Основной код в контроллере минимального представления:
-(IBAction)doPresent:(UIView *)sender
{
NSURL *url = [[NSBundle mainBundle] URLForResource:[NSString stringWithFormat:@"%d", [sender tag]]
withExtension:@"pdf"];
UIWebView *wv = [[[UIWebView alloc] init] autorelease];
UIViewController *vc = [[[UIViewController alloc] init] autorelease];
[vc setView:wv];
UINavigationController *holder = [[[UINavigationController alloc] initWithRootViewController:vc] autorelease];
[self presentModalViewController:holder animated:YES];
[wv loadRequest:[NSURLRequest requestWithURL:url]];
UIBarButtonItem *close = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
target:self
action:@selector(doDismiss:)] autorelease];
[[vc navigationItem] setRightBarButtonItem:close];
}
-(IBAction)doDismiss:(id)sender
{
[self dismissModalViewControllerAnimated:YES];
}
Не изображено: основной наконечник, содержащий этот VC, его представление,и пять кнопок, подключенных к doPresent:
, каждая из которых помечена 1 ... 5;и 1.pdf через 5.pdf в комплекте приложений.Запустите его, и он будет работать так, как и следовало ожидать, за исключением того, что он зависает примерно после полдюжины или около того просмотров PDF-файлов.
Запуск его под инструментами (выделениями) дал такой интересный сюжет:
Шаблон, который я заметил, состоит в том, что, если я отображаю PDF-файл и отклоняю его без прокрутки вокруг документа , он освобождается, как и ожидалось, с минимальной утечкой.Но если коснуться и прокрутить хоть немного, память не освободится.При просмотре последующих PDF-файлов не используется повторно потраченная память, но каждый выделяет больше своей.Запуск в симуляторе и запуск предупреждений памяти также не возвращает эту память.
Когда использование достигло ~ 25 МБ, программа получила kill -9
'd.Мне кажется, что это мало, предполагая утечку какого-то другого ресурса, кроме памяти приложения.
Это на iPad 1, под управлением 4.3, только что перезагружен.
Идеи?Обходные?Глупые упущения с моей стороны?