Coordinator finish() 로직 재사용 하기

brick·2023년 11월 5일
0

새싹 마켓

목록 보기
2/2

문제 상황

Detail View로 화면 전환하는 과정에서 자식 coordinator를 childCoordinators에 넣어 reference count를 증가시켜 pushToDetail(product:) 스코프가 끝나도 deinit 되지 않게 유지해 줍니다. coordinator의 flow가 끝난 경우 finish() 메소드를 통해 childCoordinators에서 제거해 reference count를 감소시켜 deinit 될 수 있게해줍니다.


coordinator들의 finish() 메소드에는 다음 코드들이 반복되고 있었습니다.

  • flow가 끝난 coordinator의 childCoordinators를 전부 비우는 작업
  • 부모 coordinator의 childCoordinators에서 flow가 끝난 coordinator를 제거하는 작업

문제 해결

CoordinatorProtocol의 extension에 finish() 메소드의 구현부를 추가해 coordinator마다 똑같은 코드가 반복되지 않게 했습니다.

CoordinatorProtocol에 finishDelegate를 추가해줘 부모 coordinator에서 flow가 끝난 coordinator를 제거하는 코드가 반복되지 않게 했습니다.

0개의 댓글