UITableView reloadData много раз вызывает утечку памяти и замедляет работу приложения - PullRequest
3 голосов
/ 27 октября 2010

Я допустил ошибку при использовании инструмента «Утечки», считая, что общее количество живых объектов - это байт памяти, поэтому я обновил свой пост!

[Обновлено]

Hello All,

Я сталкиваюсь с проблемой, что:

Мое приложение представляет данные в реальном времени, используя UITableView, который может содержать не более 34 настраиваемых ячеек, поэтому при получении данных обновления мне нужно выполнить reloadData для этого UITableView. Обычно этоперезагружается 2-3 раза в секунду для обновления 2-5 ячеек (и, кроме того, при обновлении ячейки я использую анимацию UiView для мигания соответствующей текстовой метки).

При запуске приложения все в порядке, онобегите ровно, но продолжайте работать в течение 20-30 минут, он замедляется и иногда зависает через секунду.Я использовал инструмент Leaks для тестирования своего приложения и увидел, что после запуска оно использует около 17 МБ памяти, но через 20-30 минут оно использует 25k-28k живого объекта (1,7 МБ памяти), Когда я пытался перемещаться по всем экранам, он использовал до 80K живых объектов (6,5 МБ памяти) : (

Я предполагаю, что UITableView загружается много раз, что вызываетмое приложение использует все больше и больше памяти время от времени и заставляет его работать медленно.

Так что кто-нибудь знает, как решить эту проблему, пожалуйста, помогите мне, большое спасибо!

Ответы [ 2 ]

4 голосов
/ 27 октября 2010

Не могли бы вы использовать reloadRowsAtIndexPaths:withRowAnimation: вместо?

2 голосов
/ 27 октября 2010

Исправлена ​​утечка памяти вместо обходного пути ...

При каждом получении данных не следует раскрывать все данные, которые увеличивают объем вашей памяти.

...