티스토리 뷰
안녕하세요. 밀쿄입니다.
오늘은 콤바인을 시작하기 전에 알면 좋을 것들을 살펴보겠습니다.
(글의 순서가 너무 뒤죽 박죽이네요)
먼저 애플에서는 콤바인을 뭐라고 설명할까요?
시간에 따른 값들을 처리하기 위한 통합적이고 선언적인 API라고 공식 문서에는 되어있습니다..
그럼 콤바인은 왜 필요할까요?
그 이야기를 위해서는 먼저 비동기 프로그래밍에 대해서 이야기 해야합니다.
'비동기' 라는 단어를 들으면 흔히 네트워크 통신을 떠올릴 것이라고 생각합니다.
하지만 사실 네트워크에 국한하는 것은 옳지 않습니다
앱에서 일어나는 모든 동작은 비동기이기 때문입니다.
그렇다면 우리는 이러한 비동기처리방식을 어떻게 사용했을까요?
여태까지 우리가 알게 모르게 써온 Notification Center, Delegate, GCD(Grand Central Dispatch), Operations 등등 이런것들이 있습니다. 이제 이 수 많은 방식에 Combine이라는 것이 생겼습니다. 그리고 이 콤바인에 찰떡 궁합인 SwiftUI까지 생겼죠.
그럼 이러한 Combine은 완전히 새로운 것일까요? 그렇진 않습니다.
Combine은 애플 생태계를 한번쯤 개발해봤다면 들어봤을 RxSwift처럼 반응형 프로그래밍이란 개념에 근간을 두고 있습니다.
그렇다고 Rx랑 너무 같다고 생각하시는 것도 안좋다고 생각합니다. 유사한 점도 있지만 다른점도 꽤 있습니다.
물론 Rx를 안하신 분도 Combine으로 시작하실 수 있습니다.
iOS 13이전에 애플애서는 반응형 프로그래밍이 중요한 개념이 아니었기에 이제부터 시작하시면 됩니다,
사실 이 글도 그 목적으로 작성하고 있는 거죠.
이쯤 읽으셧으면 이러한 생각도 들 수 있을껍니다.
Rx랑 근간이 비슷하면 보통 MVVM에서 바인딩? 용도로 많이 쓰던데 이 녀석도 그런거 아닌가?
사실 Rx도 MVVM도 둘 다 앱 구조에 영향을 주는 framework가 아닙니다, 즉 아무데나 써도 된다는 거죠.
물론 SwiftUI까지 사용한다면 Controller는 없애는게 좋지만 말이죠.
그럼 마지막으로 콤바인을 쓰면 뭐가 좋아요? 하실 수 있는데
물론 콤바인 없이도 좋은 앱을 만들 수 있지만
젤 큰 좋은 점은 테스트가 쉬워진다는 점인 것 같습니다.
기존의 비동기는 테스트를 하기 까다로웟지만
콤바인은 Publisher가 제가 예상한 값을 잘 발행해내는지 Subscriber가 그 발행한 값을 잘 받는지 이것만 테스트하면 됩니다,
그리고 또한 모든 비동기 작업이 Publisher를 사용하여 이루어진다면 재사용성도 좋아지겠죠.
그치만 이러한 점에도 불구하고 iOS13이란 높은 타겟이라는 점, 그리고 learning curve가 높다는 점이 단점이겠네요.
또한 자기 프로젝트 잘 맞는지 잘 판단하는 것도 중요할꺼구요.
이러한 콤바인에 대해서 다음 시간부터 하나하나 알아봅시다.
'Combine' 카테고리의 다른 글
[연산자 정리 001 ] collect, map, replaceNil, scan (0) | 2020.02.26 |
---|---|
Publisher & Subscriber (0) | 2020.02.19 |
CombineLatest (0) | 2020.02.11 |
[Combine] Sequence (0) | 2019.12.20 |
[Combine]Just (0) | 2019.12.16 |
- Total
- Today
- Yesterday
- CombineLatest
- 현업이그리운
- compactMap
- ErrorHandling
- combine
- 스위프트
- AutoLayout
- 유니온파인드
- 콤바인
- swift
- 스위프트유아이
- 텔큐온
- MVC
- UIViewControllerRepresentable
- 삨
- Apple
- iOSCombine
- 결합연산자
- SwiftUI
- BBIK
- Just
- Queue
- replaceNil
- 스유
- 자료구조
- SEQUENCE
- ios
- programmers
- 스택뷰
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |