Не очень хорошая стратегия превращать ваш AppDelegate в «большой шарик грязи», который содержит миллион методов и свойств (хотя это может быть заманчиво).
Лучший и более объектно-ориентированный подход к разделению кусочков функциональности на хорошо спроектированные объекты - например, у вас может быть класс DatabaseManager, который обрабатывает все взаимодействия с базой данных.После этого у вас могут появиться биты вашего приложения, которым нужно, чтобы DatabaseManager запросил у экземпляра делегата приложения ссылку на DatabaseManager.
Кроме того, вы можете передать ссылку на DatabaseManager тем частям приложения, которые в ней нуждаются.Этот последний подход, однако, вызывает большее «загрязнение интерфейса», когда вам нужно изменить интерфейсы во многих местах, чтобы передать в DatabaseManager.
И еще одна альтернатива - сделать ваш DatabaseManager эффективным.'singleton' - доступ к его экземпляру через метод класса в классе.Синглтоны, которые работают таким образом, часто осуждаются, и обычно по уважительным причинам (что усложняет тестирование, такого рода вещи).Я стараюсь избегать того, чтобы объекты «синглтонного» характера запекались прямо в объекте - я предпочитаю, если мне это нужно, иметь известную точку доступа (своего рода «фабрику», если хотите), где выможно перейти к получению общего экземпляра.