Разделение приложений iOS / MVC - PullRequest
2 голосов
/ 03 ноября 2010

Я играю с iOS-разработкой, и я нахожусь на стадии, когда я хочу создать что-то помимо простого приложения.Однако я не уверен, что понимаю, как правильно разделить приложение.

В целях простоты представьте (очень) простое приложение аудиоплеера.Допустим, есть два контроллера представления, доступных через UITabBarController, который создает основной класс AppDelegate.

Каждый из этих контроллеров представления несет следующую ответственность:

  1. PlayerViewController -Звуковой проигрыватель, который воспроизводит «текущий» аудиосэмпл, когда пользователь нажимает кнопку.

  2. SelectorViewController - селектор сэмплов, который использует UIPickerView для отображения доступных аудиосэмплов, чтобы пользователь могМожно выбрать сэмпл, который они хотят воспроизвести.

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

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

Любые указатели будут высоко оценены.

Ответы [ 2 ]

3 голосов
/ 03 ноября 2010

Я использовал этот шаблон (менеджер данных Singleton) несколько раз в серьезных приложениях.Это довольно просто, легко понять, легко использовать, хотя этот шаблон презирается пуристами ООП.

Если никто не скажет вам, что неправильно использовать синглтон, продолжайте, просто проверьте документацию Apple нарекомендуемая реализация (есть куча методов для перегрузки).

Да, кстати, Apple часто использует его в iOS SDK, так что это обычная практика (см. Методы класса, начинающиеся с 'shared').

ОБНОВЛЕНИЕ:

Другой возможностью является повторное использование уже существующего синглтона, например, делегата приложения.Может быть, чище или нет, это скорее вопрос вкуса.Он имеет преимущество в том, что дает четкую «точку входа», где вы размещаете / создаете / запускаете свой менеджер данных.

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

Если источник ваших данных находится на удаленном сервере и поступает в ваше приложение в виде XML-файла, вы также можете получить его в любое время с помощью своего рода класса загрузчика исходного кода.

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

Еще один способ более осторожного использования памяти - получение данных из базы данных sqlite с использованием Core Data.Но некоторые люди думают, что это слишком сложно для простого приложения, и предпочитают выполнять запросы вручную.

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