[디자인패턴] 프로젝트에 Coordinator Pattern 적용 (3) - AppCoordinator 관리 & 순환참조 문제 해결
·
🖥️ Computer Science/👨🏻‍🎨 Design Pattern
AppCoordinator가 사라져서 Main 화면 Issue List가 사라지는 문제 해결기존 내 코드에는 다음과 같은 문제가 있었다.다른 곳에서는 weak var coordinator로 weak 키워드와 함께 관리가 되는데하필 메인 화면인 IssueList에서만 weak를 사용하면 앱이 더이상 동작하지 않는다.지난 번 팀원에게 내 SceneDelegate에서 AppCoordinator 관리가 잘못되었다고 짚어주셨다. 기존에 잘못된 내 코드class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? let navigationController = UINavigationController() func sce..
[디자인패턴] 프로젝트에 Coordinator Pattern 적용 (2) - 코디네이터 분리
·
🖥️ Computer Science/👨🏻‍🎨 Design Pattern
지난 번에 코디네이터 패턴을 적용해보며초반에 잘못 이해한 코디네이터아래 이미지는 잘못된(?) 이미지임, 개선 전 이미지 처음에 IssueCreator와 Assignee는 Issue List위에서 present 되는 방식이라,Issue List Coordinator 하나로만 작동하고, 내부 메소드로 상황에 맞는 ViewController를 띄워주면 된다고 생각했다.그러나 이건 OCP를 위배하는 코드라 판단, 아래와 같이 뷰컨트롤러와 코디네이터를 1:1 맵핑해주었다. 새로 적용해본 코디네이터Input에 대해 mermaid로 정리해봤다. 아래는 텍스트로 정리한 내용이다.처음에 앱이 실행되면 SceneDelegate에서 최상위 코디네이터인 AppCoordinator를 생성하고 해당 인스턴스의 .start() 메..
[디자인패턴] 프로젝트에 Coordinator Pattern 적용 (1) - 개념 & 도입 이유
·
🖥️ Computer Science/👨🏻‍🎨 Design Pattern
뷰컨트롤러의 역할 중 '화면 전환' 부분에 대한 관심 분리를 위해 코디네이터 디자인패턴을 적용해보려 한다.다른 블로그를 많이 보고, 내가 생각한 내용 위주로 현재 프로젝트에 도입하는 과정을 서술해보겠다.Coordinator Design PatternCoordinator 개념화면 전환만을 담당하는 것뷰 컨트롤러에서 present, dismiss, navi~.pushVC, navi~.popVC를 사용하여 화면 전환을 하곤 한다.그러나 이 또한, 뷰컨트롤러가 화면전환을 담당하고 있기 떄문에 SRP를 지키지 않음 Coordinator 적용 이유화면 전환만 담당하게끔 하여 뷰컨트롤러의 화면 전환 의존성을 제거함이로써 뷰컨트롤러는 View에 대한 처리만 할 수 있게 된다.현재 화면에 다른 뷰컨이 많이 쌓여 있을 때..