У меня были проблемы с перезагрузкой UITableView сегодня.
В целях отладки мои классовые модели возвращали описание своей переменной экземпляра NSDictionary. И как мой CellIdentifier я использовал это описание, чтобы убедиться, что у меня всегда есть текущие данные при разработке. Может быть, это очень глупый и неэффективный способ повторного использования UITableViewCells, но я так и делал раньше.
Так или иначе. Мне было интересно, почему после перезагрузки моих данных UITableView вообще не обновлялся, даже после reloadData, needsLayout и needsDisplay. Данные были хорошими и были обменены на новые, но они не были обработаны таким образом.
После некоторого времени отладки я обнаружил, что проблема исчезла при удалении моего метода пользовательского описания, поэтому использовалось значение по умолчанию (описание указателя, позиция в памяти?).
Теперь мой вопрос: почему это так? Я предполагаю, что UITableView проверяет, изменилось ли описание данных. При возврате фиксированного значения с помощью метода описания я мог бы идеально воспроизвести проблему. Так что я прав, метод описания - это то, что используется для определения необходимости перезагрузки данных, верно?
Ну, вот вторая часть моего вопроса: я тупо вернул описание содержимого огромного NSDictionary, верно. Но этот словарь должен был отличаться и после перезагрузки. Теперь мне интересно - есть ли другой способ, которым UITableView пытается выяснить, есть ли разница? Или это просто сверхдлинное описание, вырезанное после n символов? Разница (значение изменилось с «6» на «7») произошла довольно поздно в описании, возможно, после 500 символов или чего-то в этом роде ...
Спасибо за информацию:)
Arne