Как сказать UITableView для предварительной загрузки всех строк? - PullRequest
0 голосов
/ 28 мая 2010

Есть ли способ сказать UITableView для предварительной загрузки всех строк?

В табличном представлении должно отображаться несколько комментариев (до 80 комментариев).

Таким образом, мой CommentCell использует Setter для адаптации ячейки к конкретному комментарию.

-(void)setComment:(Comment *)newComment {
 if (newComment != comment) {
     [comment release];
        comment = [newComment retain]; 
       /*
        * set the cells view variables here
        */
    }
}  

Этот конкретный установщик занимает довольно много ресурсов обработки, а прокрутка становится немного запаздывающей.

Я использую специфичный для комментария reuseIdentifier вместо статического cellIdentifier при вызове

dequeueReusableCellWithIdentifier:

чтобы убедиться, что "newComment" равен старому "комментарию".
И на самом деле это прекрасно работает при прокрутке уже загруженных ячеек.

Но при прокрутке комментариев в первый раз, он по-прежнему отстает, как ад.

Что приводит меня к моему вопросу:
Есть ли способ сообщить табличному представлению о предварительной загрузке всех ячеек? (в чем я сомневаюсь)
или
Должен ли я реализовать свой собственный кэш вместо того, чтобы полагаться на «dequeueReusableCellWithIdentifier:»?

Ответы [ 2 ]

2 голосов
/ 28 мая 2010

Имейте в виду, что ваш комментарий reuseIdentifier может быть причиной того, что все идет медленно (или, по крайней мере, это не помогает). Причина, по которой мы используем reuseIdentifier для UITableViewCells, заключается в том, что если вы пытаетесь выделить новую ячейку каждый раз, когда она вам понадобится, она не будет такой производительной, как если бы вы могли просто повторно использовать уже созданную.

Я бы рекомендовал предварительно вычислить ваши комментарии, чтобы вы могли просто установить свойства своих ячеек и повторно использовать ячейки после того, как они прокрутят таблицу.

1 голос
/ 28 мая 2010

Нет, вы должны предварительно загрузить свои данные в dataSource. Просто поместите все необходимое в массив и заполните ячейки таблицы из этого массива предварительно загруженных объектов.

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