2016-11-21 14 views
1

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

Я планирую представить шаблон MVP или VIPER. Я из веб-фона, и в веб-приложении мы использовали разные слои/dll (для модели, вида, общего и т. Д.). Имеет ли смысл следовать одному и тому же многоуровневому подходу (рамки в этом случае) в iOS, или это будет излишним? Я не сталкивался с каким-либо образцовым проектом (основанным на MVP), который создает различные рамки для модели, представления и презентаций? Было бы здорово, если бы кто-то мог поделиться любым образцовым проектом (на основе MVP), который мы можем использовать в качестве стартового проекта.

Заранее спасибо

ответ

2

В прошивке, мы обычно используем MVC - Model/View/Controller. Итак, если вы ищете аналог в мире iOS, вот и все. Если вы говорите, что вы действительно впились в MVC, и вы находите что-то очень неудовлетворительное, и поэтому хотите ввести другой шаблон, тогда это другой вопрос.

Итак, нет, логическое разделение обязанностей, которое вы видите в подходах, таких как MVC, не является излишним. Фактически, разделение классов «view» и «controller» является достаточно важным для всего, что мы делаем (например, подклассы UIView, подклассы UIViewController и т. Д.), Поэтому единственное, что вам действительно нужно сделать - это разработать соответствующие «модельные» классы и вы отправились на гонки.

Но, в ответ на ваш вопрос, вы обычно не используете отдельные целевые рамки для модели, представлений и контроллеров. Вероятно, это было бы излишним. Обычно вы можете отслеживать все через разумное использование групп/папок Xcode в вашем проекте. Обычно мы просто извлекаем материал в рамки для более технических или логистических причин (прямые просмотры, расширения приложений, обмен кодами между несколькими приложениями и т. Д. ... см. WWDC 2015 Building Modern Frameworks для обсуждения того, когда вы обычно используете фреймворки).

Но на вопрос MVC vs MVP или VIPER (или MVVM или что-то еще). Я бы посоветовал вам просто принять общий дух всех этих шаблонов (а именно разделение обязанностей) и применить его к вашему коду iOS MVC. После того, как у вас есть опыт работы с iOS под вашим поясом, вы можете переоценить этот шаблонный вопрос.

+0

Даже если я выбираю MVC, я должен держать модель и вид/View Controller в одном проекте. Или создать другой проект (рамки в iOS) для модели? – Pragmatic

+0

@Pragmatic - Нет, вы обычно не использовали бы отдельные рамки. См. Пересмотренный ответ. – Rob

1

Если вы начинаете разработку iOS и ищете хорошую архитектуру, идите с VIPER. Это вовсе не является излишним, пока вы:

1 - Автоматизировать VIPER файлов поколения

2 - Автоматизировать инициализацию VIPER модули

Для выполнения обоих требований выше, используйте этот Xcode плагин (https://github.com/natangr/ViperTemplate) для генерации и автоматически инициализировать файлы VIPER. Он работает как шарм!

И прочитайте это сообщение https://www.ckl.io/blog/best-practices-viper-architecture, чтобы узнать больше о том, как автоматизировать работу при использовании VIPER.

Я использую его, даже для очень маленьких проектов (160H развития)