Немного пояснений по схеме
Assistent (что то похожее на interactor), но только смотрящее "в мир". Он слабо держит модуль Presenter, а так же имеет функции, которые видны всему приложению. Что то вроде "presentOnViewController" и "isCanShowNow". Концептуальные примеры.
Presenter, как я указал выше, держит strong ссылкой Assistant (зачем объясню ниже) и его функция понятна - конфигурирует ViewController и обрабатывает события из него.
VC - контроллер, держит strong ссылкой presenter
А теперь как выглядит цепочка взаимодействия: пользователь нажимает кнопку на VC - обработчик находится в Presenter. Из него уже идет обращение к Assistant, который дает ответ. На основе ответа presenter обновляет контролер. Все отлично.
Но вся эта схема -модуль. И по факту когда я его создаю - я создаю переменную. Например, SimpleAssistant.
Далее конфигурирую поля, если нужно, и вызываю "presentOnViewController" (понятное дело скрыто протоколом, Assistant не знает какой презентер, у него просто набор функций смотрящих в приложение). Контролер презентует и все супер.
Но есть подвох. Как только я создам объект Assistant - тут же умрет контроллер. Он еще не презентован и его никто не держит. Можно конечно сделать так, чтобы ассистент держал презентер, а презентер держал контроллер, но есть момент - как только закончится зона видимости ассистента (к примеру, я его инитил в селекторе) - умрет ассистент и презентер. Контроллер будет жить потому что он в стеке. Но работать корректно без презентера и ассистента не будет.
Предполагаю проблему в архитектуре, как правильно реорганизовать связи?