iOS 개발

iOS 개발/DiffableDataSource

[DiffableDataSource] DiffableDataSource 사용법(1)

오늘은 간략한 예제와 함께 DiffableDataSource의 실제 사용법에 대해 살펴보는 시간을 갖겠다. Section, Item 클래스 생성하기 UICollectionViewDiffableDataSource는 Section identifier, Item identifier 이렇게 두 개의 generic 타입을 가진다. 우선 Section을 생성하겠다. 1. Section 생성하기 Section Type은 가변적이라면 Class 타입으로 생성하고, 고정된 섹션을 가진다면 enum 타입으로 생성해도 된다. class Section: Hashable{ let id = UUID() var title: String var people: [Person] init(title: String, people: [Per..

iOS 개발/Combine

[Combine] Publisher Future와 CompletionHandler의 차이

Apple에서는 프로토콜로 미리 구현한 Publisher가 존재한다. 오늘은 해당 Publisher에 대해 살펴보고, 그 중 Future에 대해 자세히 알아보는 시간을 갖고자 한다. Publisher를 간략하게 설명하면, Subscription을 만들고 Subscriber들에게 이벤트를 방출하는 타입을 위한 프로토콜이다. 그리고 Apple에서 이러한 Publisher를 프로토콜로 미리 구현했는데, 다음과 같다. 1. Just 2. Future 3. Deffered 4. Empty 5. Fail 6. Record 7. AnyPublisher 회사 코드에서 자주보이는 것들은 Future, AnyPublisher정도 였던 것 같은데 생각보다 많은 Publisher들이 존재했다. 오늘은 간단하게 Just를 살펴..

iOS 개발

DiffableDataSource 정의

기존에 TableView나 CollectionView를 구성할 때 우리는 DataSource와 Delegate를 활용해 구현을 했다. DataSource는 데이터를 받아 뷰를 그려주는 역할을 한다. 뭘 어떻게 보여줄거냐를 해주는 것이 DataSource라고 생각하면 된다. Delegate는 어떤 행동에 대한 "동작"을 제시하는 역할을 한다. DataSource가 "보여주는" 역할을 담당했다면 Delegate는 사용자가 보이는 부분 중에 어떤 것을 클릭하거나 어떠한 행동을 했을 때 그 행동에 대한 동작을 수행하는 역할을 한다. 그러던 중 WWDC 19에서 Diffable DataSource가 등장하게 되었다 DiffableDataSource란? TableView 또는 CollectionView를 그리기 위..

iOS 개발/Combine

[Combine] CurrentValueSubject & PassthroughSubject 예제(2 - 1)

앞서 살펴보았던 예제들 말고도 조금 다른 예제들도 봐야 내가 이해할 것 같아서 조금 더 알아보도록 하겠다. CurrentValueSubject 예제 // subject 생성 let currentValueSubject = CurrentValueSubject("기본값") // subscriber1 currentValueSubject .sink(receiveCompletion: { print("1 번째 completion: \($0)") }, receiveValue: { print("1 번째 value: \($0)") }) // subscriber2 currentValueSubject .sink(receiveCompletion: { print("2 번째 completion: \($0)") }, receiveV..

iOS 개발/Combine

[Combine] Subject 정의 및 예제(2)

저번에 살펴보았던 Publisher와 Subscriber에 이어서 Subject에 대해 살펴보도록 하겠다. 회사에서 개발된 코드의 VM에는 CurrentValueSubject, PassthroughSubject가 즐비하게 늘어서 있기 때문에 무적권 알아둬야 할 것 같다.. Subject란? subject는 외부 발신자가 element를 publish할 수 있는 방법을 제공하는 publisher이다. 그냥 publisher라고 이해해보자.. 이러한 Subject는 Publisher 프로토콜을 채택하고 있다. Combine에는 미리 만들어진 Subject가 2가지 존재한다. 1. CurrentValueSubject 2. PassThroughSubject CurrentValueSubject란? single v..

iOS 개발/Combine

[Combine] Publisher & Subscriber란?(1)

현재 다니고 있는 회사에서는 UIKit + Combine을 활용한 앱을 개발하고 있다. 따라서 이제껏 Combine을 써오긴 했지만 뭐가 뭔지도 모르고 항상 쓰고 있어서 이번에는 꼭 깊게 공부를 해보려고 다짐하며 글을 쓰게 되었다. 진짜 이번에도 안하면 내가 사람이 아니지 Combine 5가지 프로토콜 1. Publisher 2. Subscriber 3. Subject 4. Scheduler 5. Cancellable Publisher란? Publisher는 프로토콜. 타입이 시간에 따라 일련의 값을 전송할 수 있음을 선언한다. Publisher는 하나 이상의 Subscriber 인스턴스에게 element를 제공한다. Publisher는 receive(subscriber:) 메소드를 구현해 subscri..

iOS 개발

[iOS 개발] Compositional Layout이란?

Compositional Layout이란? 요즘 앱들을 보면 단순히 TableView, CollectionView 하나로 이루어져 있는 경우보다 섹션별로 각각 다른 레이아웃으로 구성되어 있는 경우가 대부분이다. 과거에 나 또한 TableView에 CollectionView를 넣어서 화면을 구성했던 기억이 나는데, 기억상 데이터 전달을 할 때 어지러웠던 기억이 난다. 이러한 경우 Compositional Layout을 사용하게 된다면 유연하고 편리하게 화면을 구성할 수 있다. Compositional Layout 구성 Compositional Layout은 Layout, Section, Group, Item으로 구성된다 Layout안에는 Section들이, Section안에는 Group들이, Group안에..

iOS 개발

BaseViewController란?

BaseViewController란? BaseViewController는 UIViewController를 상속받는 커스텀 뷰컨트롤러를 뜻한다. 이러한 BaseViewController를 사용하는 이유는 개발자가 사용하기 편하게 커스텀 한 후 ViewController를 생성할 때 UIViewController가 아닌 BaseViewController를 상속받아 사용하기 위함이다. 기존: MyViewController: UIViewController 커스텀: BaseViewController: UIViewController -> MyViewController: BaseViewController BaseViewController에 들어가야 할 내용 중복적으로 사용하게 되는 부분들을 주로 넣는데 가령, - 앱..

bamtorii
'iOS 개발' 카테고리의 글 목록 (3 Page)