iPhone: утечка с UIWebView загрузки документов Office. Есть идеи как этого избежать? - PullRequest
1 голос
/ 06 мая 2010

Хотя в UIWebView уже есть немало постов о утечках, я считаю, что он немного более особенный и поэтому заслуживает отдельного поста здесь.

Я вижу воспроизводимую большую утечку при каждой загрузке документа Office, такого как файл Word или Excel.

Например, каждый раз, когда я отображаю 180-килобайтный файл .doc, я получаю утечку в 100 КБ. И это происходит как с симулятором, так и с реальным устройством под управлением ОС 3.1.3.

Утечка не видна с помощью инструмента Leaks, но только при просмотре экземпляров malloc с помощью инструмента ObjectAlloc.

Вот изображение из следа инструментов:

альтернативный текст http://files.tempel.org/iPhone/UIWebView-Leaking.png

Я также сделал демонстрационный проект, UIWebView-Leak.zip , так что вы можете проверить это самостоятельно.

Чтобы увидеть утечку, используйте инструмент ObjectAlloc, переключитесь на вид, где вы видите отдельные объекты размещения, и сортируйте по размеру, чтобы вы видели большие в группе, как на моем рисунке выше. Затем просмотрите документ Office несколько раз и найдите объекты Malloc, которые продолжают оставаться «живыми» даже после того, как фактический UIWebView был освобожден.

Это известная ошибка? Или я могу как-то избежать этих утечек? Т.е. вы успешно показали документы Office на iPhone, не получив таких утечек?

Примечание: Я уже сообщал об этом в Apple как об ошибке (ID 7950594)

Я все еще жду, пока кто-нибудь (включая Apple) подтвердит это как истинную утечку или покажет, почему это не так (то есть я делаю что-то неправильно или делаю неправильные предположения)

Ответы [ 2 ]

1 голос
/ 20 мая 2010

Оказывается, это настоящая ошибка. Apple только что сказала мне, что они исправили это в следующем выпуске iPhone OS. Обходной путь отсутствует.

0 голосов
/ 15 апреля 2011

Вот обходной путь, который может работать для вас (проверено только с файлами PDF):

Попробуйте добавить

[webView loadHTMLString: @"" baseURL: nil];

прямо перед выпуском веб-просмотра. Для утечки в 4.2.1, касающейся отображения PDF в UIWebView, это

...