본문 바로가기

아키텍처+디자인패턴7

MVVM + Clean Architecture 안녕하세요. 이번 포스팅은 MVVM + Clean Architecture에 대해 정리해보겠습니다. 아래 링크의 프로젝트 기반으로 정리하였습니다. https://github.com/kudoleh/iOS-Clean-Architecture-MVVM GitHub - kudoleh/iOS-Clean-Architecture-MVVM: Template iOS app using Clean Architecture and MVVM. Includes DIContainer, FlowCoor Template iOS app using Clean Architecture and MVVM. Includes DIContainer, FlowCoordinator, DTO, Response Caching and one of the views.. 2022. 10. 5.
DIP (Dependency Inversion Principle) 의존성 관계 역전 원칙, DIP (Dependency Inversion Principle) DIP(의존 관계 역전 원칙)은 추상화된 것은 구체적인 것에 의존하면 안 되고 구체적인 것이 추상화된 것에 의존해야 한다는 개념입니다. 의존 관계를 맺을 때 변화하기 쉬운, 자주 변화되는 것이 아닌 변화가 거의 되지 않는 것에 의존하라는 것입니다. Swift에서 추상화 된 것은 Protocol입니다. 따라서 DIP를 만족하기 위해 구체적인 클래스와 의존관계를 맺는 것이 아닌, 프로토콜과 의존관계를 맺어야 한다는 것입니다. 프로토콜을 사용하면 느슨한 결합이 만들어지고 이를 통해 새로운 기능을 개발하거나 기존 기능을 수정하고 확장하는 게 쉬워집니다. 예시를 통해 알아보겠습니다. class Person { let pet.. 2022. 7. 14.
ReactorKit Framework 안녕하세요. 이번 포스팅은 ReactorKit 프레임워크에 대해 정리하도록 하겠습니다. 😀 ReactorKit을 정리하기 전, 해당 프레임워크를 왜 쓰는지에 대해 알아보겠습니다. ReactorKit을 쓰는 이유? View Controller가 무거워지는 현상을 피하고싶다. RxSwift의 장점을 취하고 싶다. (ReactorKit는 Rx의 레이어 위에 만들어진 프레임워크) 이러한 이유가 있는데요! RxSwift + MVVM이랑 뭐가 다른지에 대해 궁금하신 분이 계실 것 같습니다. 제가 그랬거든요..ㅎ RxSwift를 사용하다보면 Cyclic Data Dependencies (다음 작업을 위해 이전 작업의 결과가 필요할때 생기는 현상)이 발생합니다. MVVM 아키텍처에서는 이러한 상황에 중간상태를 담아두기.. 2022. 6. 9.
Delegate 패턴 Delegate 패턴은 ios 개발을 하면서 정말 많이 사용한다. 애플이 만들어놓은 것을 쓰며 편하게 개발을 해왔지만 정작 delegate 패턴이 무엇인지 정확하게 알지 못했다..! 그래서 이번 포스팅은 Delegate 패턴에 대해 정리해볼 것이다. 먼저, 애플 developer 사이트에 뭐라고 설명되어있는지 확인해보잣! 앱 관련 메시지에 응답하기 위한 앱 위임 개체가 있어야 하고 앱 실행이 완료되고 포그라운드 또는 백그라운드 실행 상태가 변경될 때 대리자에게 알린다고 적혀있다. 이게 무슨 말일까? protocol RemoteControlDelegate { func channelUp() func channelDown() } class RemoteControl { var delegate: RemoteCon.. 2022. 2. 9.