본문 바로가기

분류 전체보기53

Async/await와 Combine 함께 쓰기 (Network Layer) async await를 통해서 구축되어있는 프로젝트 환경에서 저희는 Combine과 async await을 함께 쓰기로 결정하였습니다. 그 이유인 즉, async await과 Combine은 각각의 명확한 장점을 가진 방법들이었고, 그 장점들을 모두 얻고자 하였기 때문입니다. async await의 경우 Swift Concurrency를 본격적으로 활용해서 비동기 로직을 보다 효율적으로 사용할 수 있는 장점이 있었고, 이를 통해서 얻은 데이터를 Observing하다가 UI에 반영해주기 위해선 Observing에 특화된 Combine을 사용하여 그 장점을 얻을 수 있었습니다. 이 이유에 대한 이야기는 아래 글에서 조금 더 자세히 다루고 있습니다. https://codingmon.tistory.com/70 .. 2023. 12. 5.
[Combine] AnyCancellable과 cancel의 동작 파헤치기 + cancelBag을 쓰는 이유 (ft. OpenCombine) 정말 오랜만에 다시 Combine 이야기로 돌아왔습니다. 오늘 다룰 주제는 Cancellable과 cancel에 대한 이야기입니다. 글의 시작배경과 함께 이번에는 바로 시작해보겠습니다 ! 시작 배경. 구독을 취소한다, 더 이상 Publisher로부터 값을 받지 않기 위해서 subscriber는 구독을 "취소"합니다. 이 때 저희는 cancel() 메서드를 쓰게 됩니다. 예시와 함께 살펴보겠습니다. let publisher = PassthroughSubject() let cancellable = publisher .sink { num in print(num) } cancellable.store(in: &cancelBag) publisher.send(1) publisher.send(2) publisher.s.. 2023. 12. 2.
DIP의 본질? (Testable한 객체를 위한 여정 중..) 정말 오랜만에 다시 아티클을 쓰네요. 최근에는 여러 기업 코딩테스트도 있었고, 알고리즘 공부, 리팩토링 당장 해야할 것들로 벅차서 계속 미뤄지고 있었네여 다시 열심히 시간을 내서 써보겠습니다..! Combine에 대해서 공부하면서 깨달았던 점들도 정리할게 아직 산더미지만 그래도 기록해두고 싶은 주제가 있어서 조금은 쉽게 글이 써지는 주제라 이 글을 먼저 작성합니다. Testable한 객체란 뭘까 최근 MVC프로젝트를 MVVM-C으로 리팩토링을 진행하면서 "Testable한 객체"를 중점으로 설계를 개선해나가고 있습니다. 제 블로그에서 관련 주제가 나올 때마다 언급했지만 Testable한 객체에 대해서 한번 짚고 넘어가겠습니다. 제가 생각했을 때 Unit test의 목적, 본질은 ‘특정 Input이 들어왔.. 2023. 11. 27.
[Combine] Map Operator 로직 딥다이브 (ft. OpenCombine) Combine, Functional Reactive Programming의 꽃이라고도 할 수 있는 Operator의 로직이 궁금해져 이를 딥다이브해보고자 합니다. Operator의 종류가 너무 많고 모든 Operator의 동작이 다 달라서 모든 것을 다룰 수는 없고 대표적으로 Map Operator를 가지고 Operator의 동작을 엿보고자 합니다. Operator에도 결국 중요한 것은 upstream, downstream그리고 Operator를 거쳐서 바뀌는 value들이겠죠. 한번 집중해서 어떤 흐름으로 굴러가는지 살펴봅시다. 이번에도 OpenCombine을 통해서 알아보겠습니다. https://github.com/OpenCombine/OpenCombine GitHub - OpenCombine/Ope.. 2023. 11. 7.