2017-01-24 5 views
0

Я разрабатываю приложение для iOS, которое отображает более 1000 изображений, хранящихся в памяти, после использования в течение некоторого времени сбой приложений из-за утечки памяти.Ошибка приложения из-за утечки памяти - Swift

Я попробовал инструмент «Профиль», но не мог понять, где проблема, я показываю эти изображения как в tableView, так и в Icarousel. прокрутка через приложение, память увеличивается, но, похоже, не выпущена.

вещи я уже сделал:

  1. Изменение размера изображений (это просто задержка аварии).
  2. Очистка словарей и источников данных - не имеет значения.
  3. Я пробовал использовать «contentsOfFile» вместо свойства «named» при создании образа - также не имеет значения.
  4. Очистка изображения в функции многократного использования в таблицеViewCell -nothing changed-.

Примечание: Я использую AdMob, но даже когда я не использую его, памяти до сих пор просачивается.

+0

Я не уверен, как кто-то может помочь вам, не догадываясь. Как вы даже знаете, что это изображения, вызывающие проблему, если вы не знаете, что происходит? Например, в вашем коде может быть логическая ошибка, и у вас есть Заброшенная память. Я могу только рекомендовать вам выполнить поиск в Интернете для «iOS find memory leak» и посмотреть, какие общие учебные пособия доступны. Кроме того, просмотрите документацию Apple по выполнению «анализа памяти»: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/CommonMemoryProblems.html#//apple_ref/doc/uid/TP40004652-CH91- SW1 –

+0

Вы упомянули, что используете много изображений - Вы выполняете кеширование изображений? Если не пытайтесь использовать SDWebImage. В большинстве случаев приложения с большим количеством изображений запускаются в ошибки OOM из-за неправильного кэширования изображений. –

+0

Robotic Cat: Спасибо, я не уверен, что изображения являются причиной аварии, но использование приложения с меньшим количеством изображений решает часть проблемы. Я пробовал разные подходы, не связанные с изображениями, но ничего не менял. Я попробую то, что вы предложили, спасибо. – Noura

ответ

0

Как я понял, вы сохраняете свои изображения в NSArray или что-то в этом роде, чтобы представлять их в виде таблицы. Попробуйте использовать NSCache для хранения изображений в ОЗУ. Он автоматически очистит используемую память, если понадобится.