Модель MVC позволяет модели и интерфейсы быть независимыми друг от друга. Модель и интерфейс знают только о контроллере, и ничего не знают друг о друге.
На Mac OS для управления данными есть следующие инструменты:
- key-value coding (KVC),
- key-value observing (KVO),
- и bindings (недостуно для iOS).
master view controller из iOS проекта по шаблону Master-Detail:
storyboards нет на Mac OS.
connections для Mac OS app |
Department Controller это object controller.
А NewObjectSheetController это custom-written object в этом проекте (реализован в файлах NewObjectSheetController.h и NewObjectSheetController.m).
На Mac OS, контроллеры это посредники между структурами данных (например, массивами) и элементами интерфейса. На iOS, также обеспечивают функциональность управления представлениями (views) с помощью navigators и toolbars.
single items:
- Object — наследник NSObject. Добавляется в Interface Builder и потом в Attributes inspector изменяется его имя на MySpecialObject (то что вам нужно). Когда объект создается в runtime, код в MySpecialObject.h и MySpecialObject.m запускается чтобы обеспечить функциональность объекта.
- View Controller — view controller или custom subclass в котором реализован ваш код. Вы может заменить его своим кодом, но часто это не нужно. (Сравните с UIViewController в iOS, где надо едва ли не всегда заменять код. На iOS binding-like функциональность реализуется кодом для iOS-контроллера. Поэтому почти всегда приходится делать override базового view-контроллера. А на Mac OS это делается не так часто.)
- Managed Object Context — Говорящее имя: context для NSManagedObject или его потомков. Этот managed object context взаимодействовать с persistent store.
group-based controllers:
- Object Controller — контроллер управляющий любым объектом.
- Array Controller — коллекция объектов хранящаяся в массиве или множестве.
- Dictionary Controller и Tree Controller — стандартные коллекции объектов хранящие данные в разных конфигурациях.
- User Defaults Controller.
Текстовое поле Budget соединено с selection.budget через binding.
А текстовое поле Department соединено с selection.name через другой binding.
Связь между свойством value текстового поля и данными из Core Data |
Здесь выделен Employee Set controller. content привязан к Department Controller. contentset это binding NSArrayController-а, чем Employee Set и является. binding установлен от contentset свойства в Employee Set к ключу selection и значению employees. selection - это выделенные элемент в массиве, а employees это Core Data model relationship.
iOS
iOS objects:- Object—также как на Mac OS.
- External Object—placeholder для объекта который находится в мира приложения.
controllers:
- View Controller—Так же как на Mac OS, но также соотвествует iOS view management structure.
- Table View Controller—часто используемый контроллер включает в себя многое из bindings функциональности, в частности UITableViewDataSource протокол, который часто добавляется к производному классу от UITableViewController. UITableViewDelegate также часто добавляется к производным классам чтобы реализовать отображение и например высоту строк или управлять выделениями и редактированиями.
- Split View Controller, Navigation Controller, Tab Bar Controller, и Page View Controller—Более сложные чем базовый UIViewController. Много специализированного кода в этих контроллерах посвящено управлению множества различных представлений.