Лучшее место для данных и логики для возможно общего приложения iPhone / iPad - PullRequest
0 голосов
/ 30 декабря 2011

Я пишу свое первое приложение в XCode 4.2 с поддержкой iOS 4.x в текущих версиях.Для поддержки iOS 4.0 я не использую функцию раскадровки, а также unsafe_unretained для слабых ссылок.У меня есть файлы AppDelegate (.h и .m) вместе с несколькими контроллерами представления с UITabBarController.В моем первом контроллере представления в методе -viewDidLoad я инициализирую два NSDictionaries, а также запускаю таймер с интервалом в 1 секунду.В методе выбора мне нужно выбрать случайное число от 0 до 7, чтобы выбрать соответствующее значение в обоих словарях.Словари используются только в первом контроллере представления и нигде не используются.

Мой первый вопрос:

  1. . Где мне загрузить эти два словаря - в методе AppDelegate -didFinishLaunchingWithOptions: или в методе -viewDidLoad контроллера первого представления?
  2. Я тоже хотел поддержать iPad.Если это так, могу ли я создать общую библиотеку классов для поддержки iPhone / iPod / iPad ?.Если это рекомендуемый способ, могу ли я вместо этого перенести общую функцию в файл AppDelegate .m?

Пожалуйста, сообщите.

Ответы [ 2 ]

0 голосов
/ 30 декабря 2011

Вы должны хранить свой код и данные вместе, если это возможно, что означает, что если вы обращаетесь только к словарям в вашем контроллере представления, то вы должны инициализировать их в viewDidLoad.

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

Возможность использования общего файла для iPhone и iPad зависит от ряда факторов.Основным фактором является: насколько отличаются пользовательские интерфейсы?Если они очень похожи, используйте один класс для обоих.Вы также можете создать базовый класс с общими функциями и подклассами для iPhone и iPad, которые реализуют необходимые различия.

0 голосов
/ 30 декабря 2011

Вы можете переместить свои общие данные и бизнес-логику в отдельный набор классов моделей вне слоев пользовательского интерфейса и приложений.Это одно из основных преимуществ шаблона MVC - благодаря разделению и четкому разграничению легко получить отдельные слои просмотра (один для телефона и один для iPad).

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

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

Related Post: Делегаты против событий в Cocoa Touch

Если вы используете общую модель, одним из вариантов является использование одноэлементного шаблона для доступа к модели, например:

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