# Coordinator
apple login with swift
애플에서 제공하는 버튼컴퍼넌트가 아닌 커스텀 버튼을 사용할때 사용하는 방법 delegate에서 ASAuthorizationController의 처리를 위한 윈도우르 추적하기 위한 환경 설정 애플 로그인 delegate처리 및 토큰응답을 받는 코디네이터 환경변수 추가 뷰에서 사용
클린 아키텍처(with MVVM)
Clean Architecture and MVVM on iOS 학습내용 Clean Architecture and MVVM on iOS Clean Architecture and MVVM on iOS 소프트웨어를 개발할 때 디자인패턴 뿐만 아니라 아키텍처 패턴도 중요하다. 소프트웨어 엔지니어링에서는 많은 다양한 아키텍처 패턴이 존재한다. 모바일 분야에서는 가장 널리 사용되는 것은 MVVM, Clean Architecture 및 Redux 패턴이다. 위 사진처럼 다양한 레이어가 존재한다. 중요한 규칙은 내부 레이어가 외부 레이어를 알지 못하는 것이다. 바깥에서 안쪽으로의 화살표가 의존성 규칙이다. 외부에서 내부로만 종속성이 있을 수 있는 것이다. <i

뷰끼리 데이터 어떻게 넘겨요...?
다른 ViewController로 데이터 어떻게 넘기지? 지금까지 MVC 패턴에서 VC가 뷰를 짜는것 이외에 모든 로직과 navigation control을 책임졌기 때문에 다른 VC로 데이터를 넘길 때는 큰 고민없이 프로퍼티 접근을 통해 push 되는 VC에 데이터를 넘기고 있었다. 하지만 MVVM에서는 버튼 클릭의 이벤트도 ViewModel의 Input으로 넘어가기 때문에 다른 VC로 push 되는 coordinator의 활용과 push 된 VC에 데이터를 넘기는 작업을 ViewModel에서 수행해야 했다. 어떻게 구현했어? 일단 나는 아래 사진과 같이 프로젝트를 구성하고 싶었다. 좋다! 일단 하나의 VC에서 발생되는 로직 처리, 네트워킹 처리는 어느정도 이해가 되었고 View, ViewCont

Coordinator 패턴 골격 세팅
왜 필요할까? 지금까지는 navigation control을 ViewController에서 지협적으로 관리하고 있었다. 사실 navigation control을 관리하고 있다고 보기 힘들었다. 프로젝트 코드를 처음 보는 사람은 뷰들의 흐름을 알기 위해서는 모든 ViewController의 버튼 이벤트 연결 함수를 찾아야 하는 상황이었다. ViewController의 역할을 생각했을 때 Input, Output의 결과에 따른 뷰의 처리가 주된 역할이기 때문에 ViewController가 navigation 흐름을 관리한다는 것도 역할에 맞지 않는다. 그래서 각 ViewController마다 Coordinator 파일을 만들어 navigation 흐름을 관리하고자 했다. 어떻게 만들었나? https://github.com/GO-SOPT-iOS-Part/HongJuneHuke/pull/6 
아키텍쳐 적용 시작
intro 지금 MVC 패턴으로 "페어러"라는 iOS 서비스를 개발하며 굉장히 뚱뚱한 ViewController를 만드는 나를 보고 아키텍쳐 적용의 필요성을 크게 느꼈다. > 만들고 있는 서비스 소개 페이지이다. ^~^ 5월 출시되면 다들 ㅎㅎ 네 ㅎㅎ https://www.behance.net/gallery/147276499/fairerPeacemaker-for-Houseworker 분명 공통되는 뷰는 Global View Component로 분리했지만, 비지니스 로직 자체가 홈뷰에 집중되어 있어 홈뷰를 개발했던 나는 책임 분리를 너무나 하고 싶었다. iOS 개발을 하면 항상 물어보는것이 적용한 아키텍쳐 패턴이다. MVC MVVM VIPER TCA ... 사실 예전에는 단순히 면접에서 물어봐서? 동아리에서 요구하는 아키텍쳐 패턴이라서? 라는 이유로 공부해야지~ 하고 있었다. 필요성을 못느껴서 그랬는지 아니면 MVC 패턴이 익숙해서 그런건지 다른 아키텍쳐를 공부하지
코디네이터패턴을 동시성으로 리팩토링
Using swift concurrency with coordinator pattern https://medium.com/swiftblade/using-swift-concurrency-with-coordinator-pattern-de290b95f09b > 위 글을 보고 번역/정리한 글! 자세한 내용은 위 링크 참JO ! 코디네이터 패턴을 사용하는 프로토콜의 예제 코드. 얘를 스위프트의 동시성을 사용하여 리팩토링 한다고 하네여~ 위 코드에서의 문제는 두 가지가 있습니다. stop() 메소드 호출을 잊어버릴 가능성 끝난다면 children을 해제해줘야하는 필요성 The new Coordinator start() 함수에 async, throws 키워드를 포함하여, 예전 ChildCoordinator의 teardown 클로저를 삭제할 수 있습니다. teardown() 클로저는 비동기였기 때문에 스위프트의 동시

[iOS] - Coordinator
Coordinator란? iOS에서 View Controller의 역할은 너무나 큼 UI표시 (Presentation Logic) 로직처리 (Bussiness Logic) 화면전환 (Flow Logic) 기타 등등 거의 모든 작업이 View Controller에서 일어난다 그래서 MVVM패턴으로 Bussiness Logic과 Presentation Logic을 분리하고, 더하여 Coordinator 패턴을 통해 Flow Logic또한 분리해주면 좋다 Coordinator 프로토콜 모든 Coordinator는 다음 세가지를 가진다 현재 Flow의 NavigationController ViewController를 Push, Present하기 위함 parentCoordinator 현재 Coordinator의 RC를 잡고있는 부모 Coordinator (객체 할당을 방지하고, 현재 coordinator가가 없어져야할때 해제

Coordinator 패턴 ?
👩💻 새롭게 공부하며 작성한 글이기 때문에 틀린 내용이 있을 수 있습니다! 내용에 관한 피드백은 언제나 환영입니다.🙌 🔖참고 http://labs.brandi.co.kr/2020/06/16/kimjh.html https://khanlou.com/2015/01/the-coordinator/ https://saad-eloulladi.medium.com/ios-coordinator-pattern-in-swift-39a15aa3b01b https://nsios.tistory.com/48 https://nsios.tistory.com/50 SeSAC에서 서비스 단계 프로젝트를 하던 중 팀원이 coordinator 패턴을 아냐고 물은 적이 있다. '그사세 분들이 하시는 건가.. 오잉 뭐지?' 하고 넘어갔었는데, MVVM패턴에 대해서 검색을 하다가 마주치게 되었다! 간단하게 말하자면, 화면 전환을 조금 더 유연하게 사용하게 도와주는 것이라고 한다.
RxSwift)RxFlow 톺아보기
RxFlow를 도입하며 전 글에서 다룬 개념을 구체화 하기 위해 작성합니다. 작성된 글은 잘못되었을 가능성이 있습니다. 전체 깃헙 예제 코드  RxFlow 적용하기 (2)
제드님 블로그 참고 필권님 블로그 참고 Step 정의하기 Step은 어플리케이션의 네비게이션 상태라고 이전 글에서 설명했다. 일반적으로 Step을 가장 먼저 정의해주는 것 같다. Step의 경우 enum으로 표현되며 case들을 가능한 독립적으로 유지해야한다. 이 말은 즉 coordinateToMovieDetail(withID: Int) 와 같은 코드는 MovieDetailVC와 밀접하게 연결되어 있기 때문에 독립적이지 않다. 따라서 **movieIsPic
RxSwift) RxFlow 적용하기 (1)
RxFlow 공식 깃헙 Clint님 블로그 필권님 RxFlow 이론 필권님 RxFlow 실전 필권님 RxFlow 팁과 요령 RxFlow의 도입을 고민하게된 계기 현재 회사의 프