Publisher
Publisher는 시간이 지남에 따라 값의 시퀀스를 전달할 수 있다.
Combine에서 Publisher
는 프로토콜로 정의되어 있으며, 다음의 타입이 이 프로토콜을 채택한다.
Publishers
열거형의 중첩 타입으로 정의된 여러 구조체Just
,Empty
와 같은 Convenience Publisher타입을 지운 Publisher인
AnyPublisher
구조체등등
두 개의 연관 타입이 정의되어 있다.
첫 번째 연관 타입은 값의 타입(
Output
)이다.두 번째 연관 타입은 에러의 타입(
Failure
)이다.에러의 타입은
Error
프로토콜을 채택해야 한다.
Publisher
프로토콜의 익스텐션으로 여러 오퍼레이터operator가 정의되어 있으며, 이를 사용해서 이벤트 처리 체인을 구성할 수 있다.
각 오퍼레이터는 Publisher
프로토콜을 구현하는 타입을 반환한다.
기본적으로 Publisher
프로토콜은 오퍼레이터의 이름과 그것이 반환하는 Publisher의 이름을 비슷하게 만들어 두었으나, 이 프로토콜을 채택하는 개별 Publisher는 오퍼레이터가 다른 타입의 Publisher를 반환하게 구현해둘 수 있다.
Publisher
프로토콜의 익스텐션으로 여러 오퍼레이터가 구현되어 있으나, Just
와 같은 개별 Publisher가 오퍼레이터를 오버로딩하여 다른 타입을 반환하도록 구현한 경우를 어렵지 않게 찾아볼 수 있다.
RxSwift
일반적으로 Publisher
프로토콜을 구현하는 타입은 RxSwift의 Observable
과 비교 가능하다.
에러 연관 타입이 Never
로 에러 값을 전달하지 않는다는 것이 보장되는 것은 RxCocoa의 Driver
와 비교 가능하다.
하나의 값을 전달하고 종료하거나, 에러를 내고 종료하는 Single
의 동작은 Combine의 Future
Publisher를 사용하여 구현할 수 있다.
Completable
, Maybe
와 같은 RxSwift의 Traits는 Combine에 별도의 타입으로 구현되어 있지 않다.
ReactiveSwift
일반적으로 Publisher
프로토콜을 구현하는 타입은 ReactiveSwift의 SignalProducer
와 Signal
과 비교 가능하다.
SignalProducer
는 'Cold Observable', Signal
은 'Hot Observable'을 의미하는데, Combine에서는 이 동작을 별도의 타입으로 구분하지 않는다.
Publisher와 Operator 쌍
Convenience Publishers
Publisher
관련 Operator
-
-
-
-
-
Record
-
Publisher in Publishers Enum
Convenience Publishers
Publisher
관련 Operator
-
catch
Working with Subscribers
Publisher
관련 Operator
receive
subscribe
Mapping Elements
Publisher
관련 Operator
tryScan
tryMap
FlatMap
flatMap
map
/ replaceNil
/ combineLatest
/ zip
mapError
scan
setFailureType
Filtering Elements
Publisher
관련 Operator
compactMap
filter
removeDuplicates
replaceEmpty
replaceError
tryCompactMap
tryFilter
tryRemoveDuplicates
Reducing Elements
Publisher
관련 Operator
collect
collect
collect
ignoreOutput
reduce
tryReduce
Applying Mathematical Operations on Elements
Publisher
관련 Operator
max
/ min
tryMax
/ tryMin
count
Applying Matching Criteria to Elements
Publisher
관련 Operator
tryAllSatisfy
allSatisfy
contains
contains
tryContains
Applying Sequence Operations to Elements
Publisher
관련 Operator
first
last
drop
drop
tryDrop
append
/ prepend
dropFirst
prefix
prefix
first
last
tryFirst
tryLast
tryPrefix
output
Combining Elements from Multiple Publishers
Publisher
관련 Operator
combineLatest
combineLatest
combineLatest
merge
merge
merge
merge
merge
merge
merge
merge
zip
zip
zip
Handling Errors
Publisher
관련 Operator
assertNoFailure
catch
tryCatch
retry
Adapting Publisher Types
Publisher
관련 Operator
switchToLatest
Controlling Timing
Publisher
관련 Operator
debounce
delay
measureInterval
throttle
timeout
Creating Reference-type Publishers
Publisher
관련 Operator
Share
share
Encoding and Decoding
Publisher
관련 Operator
encode
decode
Identifying Properties with Key Paths
Publisher
관련 Operator
map
map
map
Using Explicit Publisher Connections
Publisher
관련 Operator
Autoconnect
autoconnect
Working with Multiple Subscribers
Publisher
관련 Operator
Multicast
multicast
Buffering Elements
Publisher
관련 Operator
Buffer
buffer
Adding Explicit Connectability
Publisher
관련 Operator
MakeConnectable
makeConnectable
Debugging
Publisher
관련 Operator
breakpoint
/ breakpointOnError
handleEvents
print
Misc.
Publisher
관련 Operator
eraseToAnyPublisher
NotificationCenter.Publisher
-
-
-
-
Timer.TimerPublisher
-
Last updated
Was this helpful?