Мне кажется, что здесь ситуация Catch-22. Обратите внимание на следующие широко (и умные) позиции в архитектуре приложений:
- Apple (и большинство разработчиков alpha) рекомендуют не использовать синглтон или получать доступ к делегату Singleton для получения NSManagedObjectContext. Жесткость, плохой дизайн и т.д. ОК - я согласен!
- Итерация над контроллерами дочерних представлений UITabbarController и предоставление каждому дочернему VC ссылки на контекст (инъекция зависимостей) также глупы, потому что вы загружаете каждую вкладку своего приложения во время запуска приложения, просто чтобы передать ссылку. Это также противоречит тому, что Apple рекомендует для архитектуры приложений.
Как вы это решаете? Вы используете NotificationCenter для публикации уведомлений, когда контроллер просмотра пробуждается от nib, и передайте делегат приложения в контексте ссылки? Это единственный способ, которым я могу думать о том, что дживы с обоими # 1 и # 2, но это также похоже на какой-то изгиб для меня.
Есть ли более элегантный способ?
Изменить: делать уведомление, когда инициализация контроллера представления может быть условием гонки, так как если вы делаете что-то со Storyboard, ваши контрольные контроллеры дочерних элементов вашего табулятора, как правило, инициализируются (хотя sans-view загрузка) при запуске. Поэтому вам нужно будет сделать такое уведомление в viewDidLoad, что является плохой идеей в отношении соглашения MVC. Это также связывает ваши руки с чем-либо с моделями данных (например, предварительное кэширование для производительности), прежде чем пользователь сделает что-то связанное с просмотром.