Какой объем данных может обрабатывать UITableViewController? - PullRequest
0 голосов
/ 29 ноября 2010

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

Предположим, что массив содержит достаточное количество строк и какое-то целое число (в качестве идентификатора для этой строки, которая будет передана при выборе этой строки).Тогда каждый элемент массива представляет собой что-то вроде 4 байта для строки и 4 байта для целого числа.Однако я не уверен, как рассчитать максимальное количество элементов, которое мы можем иметь в одном табличном представлении.

Однако это приводит к другому вопросу: даже если устройство iOS может обрабатывать очень большие данные (скажем, 2000-3000 строк)это хорошее дизайнерское решение, чтобы представить пользователю такой большой объем данных?В приложении «Контакты Apple» они отображают данные о множестве контактов одновременно, одновременно совершая быстрый переход по AZ с правой стороны.В приложении Twitter пользователям представлены сотни твитов (хотя они и обрезаются посередине, если он старше одного дня).

Итак, какой способ лучше всего предоставить пользователю такой большой объем данных?

Ответы [ 3 ]

4 голосов
/ 29 ноября 2010

Вам не нужно хранить все данные в памяти сразу.Конечно, массив - это самый простой способ сделать это, но если у вас будет много строк (что я и думаю, потому что вы задали этот вопрос!), Тогда вам действительно необходимо кэшировать недавно использованные значения.

Но это не единственное, что вам нужно учитывать.

Когда таблица впервые отображается, она сначала запрашивает у делегата, сколько разделов, а затем спрашивает у каждого раздела, сколько у нее строк (даже если онине будет отображаться изначально).Это означает, что чем больше у вас разделов, тем дольше будет отображаться таблица.

Одним из больших изменений, которые я сделал между версиями 1.x и 2.x моего приложения, было уменьшение количества разделов.отображается на главном экране.Я также сохранил метаданные - например, количество строк в каждом разделе - чтобы мне не нужно было рассчитывать их каждый раз, когда представление становится видимым.Это означало, что он мог обрабатывать гораздо больше строк и был намного быстрее, даже когда объем увеличился

1 голос
/ 29 ноября 2010

UITableView может обрабатывать огромное количество элементов, потому что для этого требуются только отображаемые данные.Однако ограничение устройства означает, что вы не сможете сохранить все данные в памяти.В этом случае вы можете использовать Базовые данные, чтобы свести к минимуму объем данных, хранящихся в памяти.NSFetchedResultsController - ваш друг.

Что касается пользовательского интерфейса, я думаю, что указатель в правой части таблицы может сделать возможными большие наборы данных.Тем не менее, давайте возьмем пример из 3000 предметов.Если у нас есть 25 индексных точек (например, A, B, C, D и т. Д.), То это будет 120 пунктов между индексными точками.Я бы посоветовал не использовать строгий алфавитный указатель в этом случае, потому что распределение будет очень неравномерным.Я бы проанализировал данные и получил бы первые 2 или 3 буквы каждого 120-го элемента.Имея это в виду, я бы предположил, что 3000 не будет отличным UX.

0 голосов
/ 29 ноября 2010

Я думаю, что для большого количества данных все данные находятся не в массиве в оперативной памяти, а в базе данных на флэш-диске (данные ядра или sqlite).
Только данные для видимых строк находятся в памяти.

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