Я лично использую одноэлементный движок с моими большими приложениями, хотя это не всегда может быть лучшим вариантом. Все URL-адреса, которые я использую, требуют первого входа, полагая, что будет лучше, если один класс будет обрабатывать все запросы, чтобы предотвратить вход нескольких URL-адресов в одно местоположение.
Я в основном создаю протокол для всех моих различных классов соединений в свой синглтон и передаю в него делегата как вызывающего класса, так и синглтона. Если происходит ошибка, она передается в синглтон, чтобы он мог с ней справиться, если он ее завершает, он возвращает данные вызывающему классу.