Combine 뽀개기 2장: Subscriber
·
iOS&Swift
Subscriber A protocol that declares a type that can receive input from a publisher. 게시자로부터 입력을 받을 수 있는 형식을 선언하는 프로토콜입니다. Subscriber는 공식문서에도 쓰여있듯 프로토콜 Subscriber를 채택받은 타입은 Publisher로 부터 방출된 값을 받을 수 있는 녀셕이 된다. 코드로 보면, class CustemSubscriber: Subscriber { typealias Input = String typealias Failure = Never func receive(subscription: Subscription) { print("구독 시작") subscription.request(.max(1)) } func..
Combine 뽀개기 1장: Publisher
·
iOS&Swift
Publisher Declares that a type can transmit a sequence of values over time. 형식이 시간이 지남에 따라 값 시퀀스를 전송할 수 있음을 선언합니다. Publisher는 하나 이상의 Subscriber 인스턴스에게 Element를 전달한다. 쉬운 말로 값을 방출하는 녀셕!!! 또한 Publisher는 프로토콜이다. 내부엔 Output, Failure, receive(subscriber:)를 필수로 구현해야 한다. 하나씩 보면, Output: Publisher 객체가 내보낼 값의 타입 Failure: Error가 발생했을 때 Error 타입(Error를 방출하고 싶지 않으면, Never로 설정) receive(subscriber:): Publisher..
Appearance사용해 NavigationBar 커스텀하기(iOS 13.0+)
·
iOS&Swift
오늘은 프로젝트 때문에 NavigationBar을 입맛에 맞게 커스텀 해야 했는데 iOS13 이후로 NavigationBar가 변경되어 커스텀 하는데 삽질을 좀 했습니다. 때문에 이번에 삽질했던 과정 및 해결 방법을 기록하기 위해 iOS13부터 변경된 NavigationBar를 커스텀 하는 방법에 대해서 알아보겠습니다.오늘의 목표그림과 같은 반투명한 NavigationBar 만들기 먼저, 왼쪽 버튼과 title만 입력하고, 아무 작업도 하지 않은 navigationBar의 기본적인 모습입니다.그럼 제가 처음 접근했던 방법부터 보여드리면서,최종적으로 Appearance 사용하여 문제를 해결한 방법까지 순차적으로 작성해 보겠습니다.navigationBar.tintColor = .white // 흰색으로 버튼..
[iOS] 한 방향으로 흐르는 ReactorKit 알아보기
·
iOS&Swift
안녕하세요.이번 글에선 반응형 애플리케이션의 데이터 흐름을 단반향으로 만들 수 있게 도와주는 프레임워크 ReactorKit에 대해 알아보겠습니다.ReactorKit의 정의ReactorKit의 정의는 ReactorKit Github에 설명되어 있었습니다.ReactorKit은 Flux와 Reactive Programming의 조합입니다. 사용자 작업 및 보기 상태는 관찰 가능한 스트림을 통해 각 계층에 전달됩니다. 이러한 스트림은 단방향입니다. 뷰는 작업만 내보낼 수 있고 리액터는 상태만 내보낼 수 있습니다.위와 같이 ReactorKit은 Flux 아키텍처를 채택하고 있으며, 데이터 흐름이 단 반향으로 흐르는 아키텍처를 Flux라고 칭합니다.위 이미지와 같이 View에서 Action이 발생하면, Reator..
[iOS] Clean Architecture 파헤치기
·
iOS&Swift
안녕하세요.오늘은 Clean Architecture에 대해 알아보겠습니다.Clean Architecture 란?옛날 소프트웨어를 설계할 때, 많은 부분 하드웨어의 설계 방식을 많이 가져왔다고 합니다.하지만, 하드웨어와 소프트웨어의 가장 큰 차이점은 하드웨어는 한번 설계할 때 완벽히 설계하여 제품 출시 이후 오점이 없어야 합니다. 오점이 있다 하더라도, 이는 수정하기가 힘들죠.하지만, 소프트웨어는 버그가 생기면, 수정하여 다시 출시할 수 있고, 새로운 기능이 필요하다 생각되면, 추가하여 다시 출시할 수 있습니다.정리하면, 하드웨어는 설계 단계부터 완벽해야 하지만, 소프트웨어는 언제든 확장, 수정이 될 수 있도록 유연한 설계가 필요합니다.유연한 소프트웨어 설계를 위해 Clean Architecture와 같은..
[iOS] Coordinator Pattern
·
iOS&Swift
안녕하세요.오늘은 Coordinator Pattern에 대해 알아보겠습니다.먼저, Coordiantor가 무엇인지 알아보겠습니다.Coordinator 란?iOS를 공부하다 보면, 어느 순간 MVC, MVVM, MVP, VIPER 등 여러 Architecture를 접하게 됩니다. 여기서 MVC-C, MVVM-C 등 뒤에 C가 붙는 것을 보신 적이 있으시다면, C가 Coordinator를 의미하게 됩니다. 또한 Coordinator는 VIPER 패턴의 R(Router)과 같은 역할을 수행합니다.즉, Coordinator는 화면 간 전환을 담당합니다.좀 더 자세히는 해당 화면(ViewController)에 필요한 의존성을 주입하고, ViewController 객체를 생성해 화면을 전환하는 역할을 수행합니다.개..