Combine 시작

개요

RX의 대체품!

SwiftUI의 자매품!

MVVM을 쓸 때 없어선 안될 combine

알아보자.

애플 공식문서




Combine이전의 비동기 처리


  • NotificationCenter: 화면 전환, 키보드등의 처리
  • Delegate Pattern: 가장 흔했던 방법
  • GCD: 가장 흔했던 방법2
  • Completion Handler: 콜백(코드 더러워짐)
  • 이미 Foundation, Core 프레임워크, SwiftUI의 내부적으로는 Combine 사용중



Combine 한짤요약






Combine 기초


  • 가장 중요한 것 Publisher, Operator, Subscriber



Publisher


  • 값을 보내는 객체
  • Publisher<Output, Fail> 형태
  • output, Completion, Failure의 값이나 상태를 보낼 수 있음
  • output은 여러번 보낼 수 있음
  • Completion, Failure는 한번 보내면 끝
  • 에러 처리 안할거면 Never 넣으면 됨



Operator


  • publisher 프로토콜에 선언된 메서드
  • 체이닝 가능
  • 항상 input과 output이 존재하므로 공유 자원에 대한 생각 ㄴㄴ



Subscribers


  • Publisher가 보낸 상태 처리하는 곳이며 2개의 내장 Subscriber 존재
  • sink subscriber: output, completion을 받을 수 있는 클로저
  • assign subscriber: 특별한 코드없이 바인딩 가능하게 해줌
  • 기본적으로 이 2개만 사용해도 왠만한 처리 가능
  • subscriber가 추가될 때 publisher가 활성화됨
  • Cancellable 프로토콜로 메모리 관리함



Combine의 장점


  • Combine은 비동기 코드의 추상화를 목표로 한다.(우리가 더 이해하기 쉽다)
  • Combine 시스템 레벨에 있음. private api임
  • 코드가 깔끔해짐, 실수할 가능성 낮아짐
  • 재사용성, 조합, 통합, 테스트에 유리함
  • 선언형, 반응형 프레임워크로 모던 프로그래밍에 적합