Лучшие практики для передачи NSManagedObjectContext в контроллеры дочерних представлений UITabBarController?

Так что мне кажется, что здесь есть ситуация Catch-22. Обратите внимание на следующие широко (и разумно) позиции по архитектуре приложения:

  1. Apple (и большинство альфа-разработчиков) рекомендуют не использовать синглтон или доступ к синглтону делегата приложения для получения NSManagedObjectContext. Жесткость, плохая конструкция и т. Д. ОК - согласен!
  2. Итерация по дочерним контроллерам представления UITabbarController и предоставление каждому дочернему VC ссылки на контекст (внедрение зависимостей) также глупо, потому что вы загружаете каждую вкладку в своем приложении во время запуска приложения, просто чтобы передать ссылку. Это также противоречит всему, что Apple рекомендует для архитектуры приложений.

Как решить эту проблему? Используете ли вы NotificationCenter для публикации уведомления, когда контроллер представления просыпается из пера, и тогда делегат приложения передает ссылку на контекст? Это почти единственный способ думать об этих джайвах как с №1, так и с №2, но мне это также кажется неким искажением.

Есть ли более элегантный способ?

Редактировать : отправка уведомления при инициализации контроллера представления может быть условием гонки, поскольку, если вы делаете что-то с раскадровкой, дочерние контроллеры представления вашей панели вкладок обычно инициализируется (хотя загрузка без просмотра) при запуске.Таким образом, вам нужно будет сделать такое уведомление в viewDidLoad, что является плохой идеей по сравнению с соглашением MVC. Это также связывает ваши руки с тем, чтобы делать что-либо с моделями данных (например, предварительное кэширование для повышения производительности), прежде чем пользователь сделает что-либо, связанное с просмотром.

21
задан Eric Goldberg 25 December 2011 в 05:11
поделиться