2014-10-24 3 views
1

Попытка отладки моего приложения, но моя память продолжает расти.UIImageView UIKit setImageWithURL использование памяти

У меня есть приложение, которое вытаскивает JSON из веб-службы с помощью AFNetworking. Я использую UIKit + AFNetworking для загрузки строки URL, которую я получил из JSON в UIImageView, которые находятся в пользовательской ячейке таблицы XIB. Я использую setImageForURL.

Когда я загружаю новый JSON и, следовательно, новый URL-адрес изображения, мое использование памяти скачком увеличивается на 2-7 мб каждый раз. Старые изображения заменяются в пользовательском интерфейсе новыми. Использование памяти в реальном времени увеличивается. Я заглянул в массивы с JSON и т. Д. - никаких утечек.

Я подозреваю, что происходит кеширование изображений, но я никогда не видел никакой информации о кешировании изображений при использовании UIImageView с setImageWithURL. Я видел проблемы с памятью, используя imageNamed.

У setImageWithURL таких же проблем с памятьем, как imageNamed?

ответ

0

setImageWithURL: от AFNetworking обрабатывает кеширование изображений, загружаемых с помощью этого метода. В следующий раз, когда вы вызовете это по тому же самому URL-адресу, он сначала проверит кеш, чтобы узнать, кэшировано ли изображение (так что не нужно снова подключаться к сети).

От AFNetworking API:

Асинхронный загружает изображение из указанного URL, и устанавливает его когда запрос закончен. Любой предыдущий запрос изображения для приемника будет отменен. Если изображение кэшировано локально, изображение устанавливается сразу же, в противном случае заданное изображение-заполнитель будет установлено сразу, а затем удаленное изображение будет установлено один раз , запрос завершен. По умолчанию URL-запросы содержат Accept значение поля заголовка «image/*», политика кэширования NSURLCacheStorageAllowed и интервал тайм-аута 30 секунд, а - не обрабатывать файлы cookie. Для настройки запросов URL-другому, используйте setImageWithURLRequest:placeholderImage:success:failure:

Так есть действительно кэширование, поэтому использование памяти.

Надеюсь, это поможет.

+0

Итак, это делает мое приложение памятью? По вашему опыту Apple отвергает эти типы приложений? – noobsmcgoobs

+0

@noobsmcgoobs Проблема здесь не в том, что Apple сделает; почему вы используете AFNetworking для загрузки изображения? Вам нужно кэшировать его? Приложение использует так много памяти, чтобы изображения были большими, поэтому я думаю, что они не в tableView. Дайте нам некоторый контекст, и у нас может получиться решение. –

+0

Пользователь получает изображения на основе местоположения и может обновлять представление таблицы новыми изображениями, если они перемещаются в новое место. Старые средства массовой информации не сохраняются. EG - я загружаю носитель местоположения в SF, затем переходим в NYC и обновляем; SF-среда заменяется в tableView на NYC-носители. SF-медиа не сохраняется. AFNetworking - это способ вызова API, который возвращает JSON. Я использую метод UIImageView AF для setImageWithURL для загрузки медиа-URL в UIImageView. – noobsmcgoobs

Смежные вопросы