Как уменьшить объем памяти при создании иерархии объектов модели в Какао? - PullRequest
3 голосов
/ 01 марта 2010

Я пишу приложение для викторины для iPhone, используя базовые подклассы NSObject для представления моделей. Во время выполнения различные контроллеры создают экземпляры классов модели и заполняют их данными, считанными из списка на диске.

Классы модели представляют базовую иерархию теста с множественным выбором:

  • У одного приложения есть много тестов
  • В одной викторине много вопросов
  • Один вопрос имеет много ответов

В настоящее время, когда класс QuizController загружает свой объект Quiz, он заполняет свое свойство questions NSArray экземплярами Question, и, поскольку каждый из этих экземпляров Question инициализируется, каждый из них инициализирует свои собственные NSArray с Answer экземпляров.

Я понимаю, что мне не нужны все вопросы в памяти при загрузке теста, мне нужен только вопрос с определенным индексом в массиве Quiz экземпляра questions.

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

Какой шаблон будет уместно использовать здесь? Короткий фрагмент кода также был бы очень полезен для меня, чтобы понять, как я мог бы начать реализовывать его.

1 Ответ

3 голосов
/ 01 марта 2010

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

У вас будет как минимум 20 МБ памяти для вашего приложения на старых устройствах, поэтому я на самом деле не уверен, имеет ли смысл тратить много времени на ленивые вопросы загрузки.

Вы, вероятно, можете легко загрузить сотни вопросов в память, даже не заметив этого.

Мой совет: начните не ленивый путь. Посмотрите с помощью инструментов на использование памяти. Это приемлемо, тогда оставь это. Если вы раздвигаете границы, потратьте время на оптимизацию.

...