Доступ к делегату вашего приложения из различных точек вашего приложения создает прочную связь между этими компонентами вашего приложения.
В основном вы используете глобальные переменные в своем приложении, что обычно является хорошим показателем для улучшаемого дизайна приложения.
Переменные обычно не живут в воздухе. Они существуют в контексте. Например, если вы используете имя пользователя и пароль, вы должны получить их из системной цепочки для ключей. Весь процесс аутентификации должен быть заключен в класс аутентификации, в котором вы определяете свойства.
Если вам нужен доступ к информации из разных мест вашего приложения, вы должны передать их, например, в качестве аргументов инициализатора. Это, кстати, делает ваши отдельные компоненты тестируемыми, и это хорошо.
Мой совет - сначала переосмыслить дизайн приложения, чтобы потом не оказаться в аду зависимости.