티스토리 뷰
잠시 언급한 적 있는 Just에 대해서 알아보겠습니다.
Just는 한 번만 실행되고 종료되어집니다.
끝입니다.하면 너무 재미없을테니 몇 가지를 조금 더 살펴보겠습니다
Just를 실행시키고 Jump to Definition을 실행시켜 보면 다음과 같은 소스를 얻을 수 있습니다.
일단 눈에 띄는 것은 제가 맨 처음 Just를 소개했을 때처럼 제너릭 구조체라는 것이 눈에 보입니다.
그 외에 눈에 보이는 것은
public func receive<S>(subscriber: S) where Output == S.Input, S : Subscriber, S.Failure == Just<Output>.Failure
이 부분이 눈에 띕니다.
인자로 받는 값은 Subscriber을 채택하고 있어야하고
Just가 방출하는 값이랑 subscriber의 Input이랑 같아야하고
Subscriber의 Failure은 Just
.Failure이랑 같아야하네요. 즉 Never이어야 한다는 거겠네요.
Sink는 Just에 구현되어 있지 않고 Just가 채택하고 있는 Publiser에 구현되어 있습니다.
Just는 여기까지 살펴보도록 하겠습니다.
이 뒤부터는 OpenCombine라는 라이브러리로 설명하는 부분입니다.
보실 분만 보시길 바랍니다.
https://github.com/broadwaylamb/OpenCombine/blob/master/Sources/OpenCombine/Publishers/Just.swift
Subscribers.Sink에 보면 이런 코드가 있습니다.
저 중에서 awaitingSubscription 코드를 보면 subscription에 request를 부르고 있습니다.
그런데 Just에서 Inner라는 클래스로 넘겨줍니다.
Inner는 Just의 extension에 존재하는 클래스 입니다.
Inner라는 클래스에 보면 request라는 항목이 있는데
여기서 보면 .finished를 넘겨주고 있습니다.
즉 정리하면
Just 호출 -> Inner라는 놈으로 Subscribers에 전달 -> Subscribers에서는 Inner라는 놈에 request호출 -> request에서 finishe 전달
이렇게 함으로써 Just는 단 하나만 내보내는 것을 알 수 있습니다.
'Combine' 카테고리의 다른 글
CombineLatest (0) | 2020.02.11 |
---|---|
[Combine] Sequence (0) | 2019.12.20 |
[Combine] Scheduler (0) | 2019.12.15 |
[Combine] Cancellable (0) | 2019.12.13 |
Start! Combine (0) | 2019.12.12 |
- Total
- Today
- Yesterday
- compactMap
- 텔큐온
- 유니온파인드
- 스위프트유아이
- 스유
- programmers
- 알고리즘
- iOSCombine
- 결합연산자
- swift
- Just
- AutoLayout
- 스택뷰
- CombineLatest
- SEQUENCE
- SwiftUI
- 스위프트
- ErrorHandling
- 콤바인
- BBIK
- Queue
- Apple
- MVC
- replaceNil
- combine
- ios
- UIViewControllerRepresentable
- 삨
- 자료구조
- 현업이그리운
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |