욤찌의 개발 일기
[Combine] 이제는 더 이상 물러날 곳이 없는 Combine 공부1 본문
미루고 미루다 드디어 시작해보는 Combine 공부,,,
우주의 모든 기운을 모아 Combine과 친해질 수 있기를,,,
combine과 초면인지라 일단 정리하면서 공부해봅니다
잘못된 정보가 있을시 마구 지적 plz~~~
💡Combine?
📍Customize handling of asynchronous events by combining event-processing operators.
비동기적인 이벤트를 다루기 위해 이벤트 처리 연산자를 조합하여 사용자 정의로 처리
📍The Combine framework provides a declarative Swift API for processing values over time. These values can represent many kinds of asynchronous events. Combine declares publishers to expose values that can change over time, and subscribers to receive those values from the publishers.
시간에 따라 값들을 처리하기 위한 선언적 Swift API를 제공한다. 시간이 흐름에 따라 값이 바뀔 수 있는 publisher와 이러한 값을 publisher로부터 받아오는 subscriber가 있음.
결국 시간의 흐름에 따라 발생하는 비동기적인 이벤트를 잘 처리할 수 있게 하는 것이 Combine 프레임워크이다.
시간이 흐르면서 값이 변경되는 이벤트들이 있고,
그 변경된 값을 받아서 개발자가 정의한대로 처리하는 것이라고 일단 이해해봄
그런데 사실상 Swift에는 비동기 처리를 담당하는 API가 많이 있었음.
기존의 비동기 API들도 다 중요하지만 이 개별적인 API들을 같이 구성해야 할 경우에 어려움이 있음.
그래서 애플은 Combine을 통해 이 비동기 API들 사이의 공통점들을 찾으려고 노력했다고 함
결국 기존의 비동기 인터페이스를 Combine이 모두 대체했다~ 가 아니라!
이 인터페이스들의 공통점을 통합해서 동일한 형태의 인터페이스로 사용할 수 있게 만들어 주기 위해
Combine이 탄생했다고 함
그래서 애플의 Combine 한 줄 요약은
A unified, declarative API for processing values over time
시간이 흐름에 따른 값을 처리하기 위한 통합적이고 선언적인 API
근데 공부를 하다보니까 시간이 흐름에 따라 값이 변경된다는 것이 계속 나오는데 이게 무슨 뜻인지 잘 와닿지가 않았음.
그래서 이것저것 찾아보고 GPT 선생님(^^)에게도 물어보면서 알게된 의미가
결국 일종의 스트림(stream: 연속성을 갖는 데이터의 흐름)으로 시간에 따라 값이 발생하거나 변경되는 거라고 함.
동작에 따라 값을 한꺼번에 받는게 아니라 시간 간격에 따라서 비동기적으로 값을 받는 것!
💡Combine Features
1. Generic : 결국 combine은 Swift로 작성되었고 Swift를 위해 만들어졌다고 함. 그래서 Generic처럼 Swift의 기본 기능을 활용할 수 있다는 것을 의미함. 제네릭을 통해서 반복적인 코드 작성을 줄이고 일반적인 비동기 알고리즘을 한 번 작성하면 다른 비동기 인터페이스에도 적용할 수 있어서 활용도가 높아짐.
2. Type safe : Combine은 타입 안정성을 가지기 때문에 컴파일 시간에 에러를 잡을 수 있는 장점이 있음.
3. Composition first : Combine의 주요 설계 포인트 중의 하나가 구성을 우선한다는 것이었다고 함. (이건 아직 무슨 소리인지 이해가 잘 안감,,) 아무튼 핵심 개념을 간단하고 이해하기 쉽게 설계했지만 이 개념들을 함께 사용하면 각각의 부분들 그 이상의 더 복잡하고 강력한 기능을 만들 수 있다는 의미로 이해함
4. Request driven : Combine은 요청에 의해서 동작하기 때문에 앱의 메모리 사용량과 성능을 더욱 신중하게 관리할 수 있는 장점이 있음. 요청이 없다면 값을 방출하지도 않으니까 불필요한 메모리 사용을 막을 수 있고, 필요한 값들만 전달하기 때문에 효율적인 리소스 사용이 가능하다고 함.
💡Key Concepts in Combine
Combine의 주요 키워드로 Publisher, Subscriber, Operator가 있다.
1. Publisher : 단어 뜻 그대로 발행하는 무언가,, publisher가 바로 위에서부터 계속 나왔던 값을 보내주는 기능을 담당함.
2. Subscriber : publisher가 보내는 값을 받는 것이 바로 이 구독자친구임. 값을 받아서 처리하는 것을 담당함.
3. Operator : 단어 뜻 그대로 연산해주는 친구,, publisher가 보낸 값을 연산해서 어찌저찌 연산해서 subscriber에게 잘 전달해주는 일을 담당한다고 일단은 이해함. publisher와 subscriber 사이에서 둘을 연결해준다고 보면 될듯!
아니,, 분명 여기까지 이해하는데도 진짜 시간 많이 걸렸는데
왜 때문에 정리하고 보니까 이렇게나 ,,, 공부한게 없는 느낌이지?ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ㅠㅠ
결국 Combine은 RxSwift의 애플버전이라고 생각하면 될듯 (다른거 쓰지말고 우리꺼 써~ 느낌,,)
그리고 combine도 선언적 API이기 때문에 그래서 더더욱 SwiftUI랑 더 잘맞지 않을까? 그냥 한 번 생각해봄 ,,
공부하면서 무슨 의미인지도 대충 이해는 하겠고 ,, 어느정도 이론은 알겠는데 그래서 이걸 어떻게 써볼 수 있을까~ 약간 막막하지만
그래도 combine 자체는 재밌움 !!!!!
하루에 하나씩 블로그에 정리해보려고 하는데 가능할까 ,,,,
근데 걍 이런 고민할 시간에 하나씩 이해한 만큼만이라도 올려봐야겠움
꾸준히 하면 뭐라도 되겠지,,~
📖 reference(늘 감사합니당) ♥️
https://developer.apple.com/documentation/combine
Combine | Apple Developer Documentation
Customize handling of asynchronous events by combining event-processing operators.
developer.apple.com
https://developer.apple.com/wwdc19/722
Introducing Combine - WWDC19 - Videos - Apple Developer
Combine is a unified declarative framework for processing values over time. Learn how it can simplify asynchronous code like networking,...
developer.apple.com
https://jcsoohwancho.github.io/2020-01-18-Combine-시작하기(1)-Overview/
Combine 시작하기(1)-Overview
애플은 WWDC 2019에서 Combine이라는 새로운 API를 발표했습니다. 이는 기존에 많이 쓰이고 있던 Rx와 같은 포지션에 있었기 때문에 더욱 더 많은 관심을 끌었습니다. 비록 최소 버전이 iOS 13 이기 때문
jcsoohwancho.github.io
https://sujinnaljin.medium.com/combine-combine-시작하기-ac726ac40b07
[Combine] Combine 시작하기
Combine.. 그게 뭔데.. 그거 어떻게 하는건데..!
sujinnaljin.medium.com
[WWDC 2019] Introducing Combine
안녕하세요 Pingu입니다.🐧 오늘은 WWDC 2019의 "Introducing Combine"이라는 영상을 보고 정리한 글을 써보려고 합니다. 이번 영상은 2019년에 처음 공개된 Combine이라는 프레임워크를 소개하는 영상이었
icksw.tistory.com
'TIL' 카테고리의 다른 글
[Combine] 이제는 더 이상 물러날 곳이 없는 Combine 공부2 - Publisher (1) | 2023.12.20 |
---|