Пользовательский UIView с Lazy Загрузка прокручивается слишком медленно - PullRequest
0 голосов
/ 06 января 2012

Итак, у меня в настоящее время есть класс GridView, который, по сути, выглядит так. Это подкласс UIView, который имеет промежуточную область, в которой есть множество подпредставлений, размещенных в виде сетки. Каждая ячейка GridView представляет собой пользовательский подкласс UIView, который вызывает drawRect.

Я реализовал отложенную загрузку, следуя шаблону UITableView. Я только загрузил и добавил ячейки сетки, которые были видны (+/- 2 ячейки с каждой стороны). По мере прокрутки представления я кеширую ячейки, которые больше не видны в NSMutableSet, а также повторно использую ячейки из этого набора для построения ячеек, которые теперь видимы. Все в этом, кажется, работает нормально, как я тестировал и профилировал, без утечек памяти.

Проблема в том, что прокрутка слишком медленная / прерывистая. Чем быстрее пользователь прокручивает, тем он круче. Иногда, если вы прокручиваете очень быстро, выдается предупреждение памяти. После некоторой работы по отладке, я обнаружил, что когда она начинает зависать и дергаться, подвиды в gridview не удаляются, как они должны

Я также заметил, что прокрутка на iPad 1 значительно медленнее, чем на iPad 2.

Мои вопросы: есть ли у кого-нибудь идеи, как с этим справиться? Какие-нибудь хитрости или оптимизации, чтобы остановить тряску прокрутки? На этом этапе все могло бы помочь, так как я пытался понять это в течение 2 дней. Заранее спасибо

1 Ответ

0 голосов
/ 06 января 2012

Возможные причины замедления: 1) drawRect 2) кэширование при активном пользовательском активном интерфейсе

выбор a) предварительная загрузка, а затем представление плавного интерфейса, или b) плавная прокрутка при загрузке материала в фоновом режиме, пустые области, где загружается

Отладка: пытались ли вы выполнить NSLog во время процесса, например, для каждого вызова кэша, проверяя, выполняет ли он много ненужной работы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...