2009-10-15 3 views
1

У меня есть приложение на основе NavigationController, в котором модель данных хранится в appDelegate после извлечения с использованием CoreData. Представления, отображающие данные, имеют указатель на appDelegate, чтобы они могли запросить модель для требуемых данных. Затем они вызывают методы в appDelegate в ответ на выбор пользователя.Использование iPhone NSNotifications в приложении MVC

Мой вопрос в том, что шаблон MVC оптимально скрывает данные из вида? Будет ли лучшая практика для приложения appDelegate (в данном случае для модели и контроллера) для предоставления данных для представления, а для представления просто отправить уведомление при вводе пользователя? Это исключило бы необходимость в представлении для указания указателя на appDelegate.

ответ

1

Вы правы, чтобы беспокоиться о том, что AppDelegate выполняет эту роль. AppDelegate - это простое место для сбрасывания вещей, и оно быстро становится перегруженным ролями. Как вы заметили, он играет модель данных, контроллер данных и делегат приложения. Если вы добираетесь до AppDelegate с помощью [[[UIApplication sharedApplication] delegate], это особенно проблема, потому что очень сложно повторно использовать представление в других программах. Это не проблема, если у вашего представления есть delegate ivar, который просто указывает на AppDelegate, но может легко указать на какой-то другой объект.

В представлении часто должен присутствовать делегат, которому он передает события пользовательского интерфейса. См. UITextField и UITextFieldDelegate для хорошего примера. Взгляды вообще не публикуют NSNotification за этот материал. И наоборот, классы моделей обычно лучше всего работают без делегатов в моем опыте.

Я очень верю в NSNotification. Мои программы используют их почти для всех данных, которые перемещаются из слоя модели. Но для действий, которые перемещаются вниз от уровня представления, запросы делегирования и прямого метода обычно работают лучше всего.

0

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

+0

Вы правы ... Я хотел сказать viewController. – Alpinista

Смежные вопросы