Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Пояснения к прикрепленному графику

Assistent (что то похожее на interactor), но только смотрящее "в мир". Он слабо держит модуль Presenter, а так же имеет функции, которые видны всему приложению. Что то вроде "presentOnViewController" и "isCanShowNow". Концептуальные примеры. 

Presenter, как я указал выше, держит strong ссылкой Assistant (зачем объясню ниже) и его функция понятна - конфигурирует ViewController и обрабатывает события из него. 

VC - контроллер, держит strong ссылкой presenter

А теперь как выглядит цепочка взаимодействия: пользователь нажимает кнопку на VC - обработчик находится в Presenter. Из него уже идет обращение к Assistant, который дает ответ. На основе ответа presenter обновляет контролер. Все отлично.

Но вся эта схема -модуль. И по факту когда я его создаю - я создаю переменную. Например, SimpleAssistant. 

Далее конфигурирую поля, если нужно, и вызываю "presentOnViewController" (понятное дело скрыто протоколом, Assistant не знает какой презентер, у него просто набор функций смотрящих в приложение). Контролер презентует и все супер.

Но есть подвох. Как только я создам объект Assistant - тут же умрет контроллер. Он еще не презентован и его никто не держит. Можно конечно сделать так, чтобы ассистент держал презентер, а презентер держал контроллер, но есть момент - как только закончится зона видимости ассистента (к примеру, я его инитил в селекторе) - умрет ассистент и презентер. Контроллер будет жить потому что он в стеке. Но работать корректно без презентера и ассистента не будет. 

Необходимо переработать данную архитектуру (возможно вообще с нуля). После закрытия контроллера должен выгрузится весь модуль из памяти 

7 лет назад
ivanvorobei
29 летБеларусь
8 лет в сервисе
Был
год назад