2012-06-27 1 views
0

У меня есть проект, в котором один UITableView может иметь сотни записей (для целей тестирования я обещаю). Я тестирую, как работать с UITableViews, так как я очень к ним знаком, и я столкнулся с чем-то, что мне не нравится.Удерживаемая память UITableViewCell сохраняется

Если вы используете dequeueReusableCell во всем своем величии, он отлично работает! Например, у меня есть кнопка, которая добавляет 100 настраиваемых ячеек к пользовательскому представлению таблицы. И все отлично

Проблема в том, что я удаляю эти ячейки! Я удаляю информацию из базы данных, а затем удаляю ячейки из таблицыView и reloadData. Все хорошо. ИСКЛЮЧАЙТЕ, что CustomTableViewCells никогда не освобождаются !!! Проблема? Я думаю, что не потому, что я использую систему dequeue, однако, поскольку сотни ячеек входят и выходят из табличного представления, и ни одна ячейка никогда не освобождается от сбоя памяти из неиспользуемых TableViewCells!

О, NOEZ!

Кто-нибудь найдет способ справиться с этим? Чтобы как-то ограничить количество ячеек повторного использования, чтобы сказать, что после 50 повторных использования они начинают освобождаться ради памяти?

+3

показать код таблицы. –

+0

просто догадаться, но когда вы создаете ячейки, вы используете «autorelease»? – dchappelle

ответ

0
  1. Вы упомянули, что вы «удалите ячейки из таблицыView», а затем reloadData. Но вы не должны удалять ячейки. Вы просто reloadData, и iOS позаботится о том, чтобы очистить ваш стол и повторно использовать ваши ячейки представления таблицы (если, конечно, ваш cellForRowAtIndexPath правильно звонит dequeueReusableCellWithIdentifier). Или вы просто пытались сказать, что вы reloadData, и вы позволяете iOS делать свою магию?

  2. Независимо от того, если вы включаете код, мы можем помочь вам найти вашу проблему.

  3. Я хотел бы предложить продолжить свой код через статический анализатор (сдвига + команда + B) и которые могут помочь вам решить вашу проблему. С помощью статического анализатора сразу обнаруживается множество простых утечек. У вас должно быть ноль предупреждения от статического анализатора.

  4. Если вы все еще просачиваетесь, используйте профилировщик find your leak.

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