Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- SWIFT
- 리팩토링
- Human interface guide
- collectionview
- map
- UITextView
- Protocol
- Clean Code
- clean architecture
- Xcode
- 애니메이션
- Refactoring
- 스위프트
- uiscrollview
- 리펙토링
- ios
- Observable
- 리펙터링
- swift documentation
- HIG
- uitableview
- combine
- swiftUI
- RxCocoa
- rxswift
- ribs
- MVVM
- tableView
- UICollectionView
- 클린 코드
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - SwiftUI] Combine의 Subject (CurrentValueSubject, PassthroughSubject) 사용 방법 본문
iOS Combine (SwiftUI)
[iOS - SwiftUI] Combine의 Subject (CurrentValueSubject, PassthroughSubject) 사용 방법
jake-kim 2022. 9. 20. 22:28목차) Combine - 목차 링크
Subject
- Publisher의 일종이고 (Publisher 프로토콜을 준수하고 있는 형태), 이 인스턴스는 이벤트를 방출할 수 있는 send(subscription:) 기능이 존재
- 애플에서는 이벤트 방출을 "inject"라고 명명
@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
public protocol Subject : AnyObject, Publisher {
func send(subscription: Subscription)
}
PassthoughSubject
- downstream subscribers에게 값을 broadcast하는 subject
- 값을 저장하고 있지는 않고 단순히 값을 토스 해주는 역할
- RxSwift의 PublishSubject와 동일
let subject = PassthroughSubject<String, Never>()
subject
.sink(receiveValue: { print($0) })
subject.send("Test1")
subject.send("Test2")
/*
Test1
Test2
*/
CurrentValueSubject
- single value를 래핑하고 값이 변경될때마다 새로운 값을 publish하는 subject 형태
- 값을 저장하고, subscribers에게 값을 broadcast하는 subject
- RxSwift의 BehaviorSubject와 동일
let subject = CurrentValueSubject<String, Never>("currentValueSubject")
subject
.sink(receiveValue: { print($0) })
subject.value = "Test1" // subject.send("Test1") 와 동일
subject.send("Test2")
/*
currentValueSubject
Test1
Test2
*/
* 참고
https://developer.apple.com/documentation/combine/passthroughsubject
https://developer.apple.com/documentation/combine/currentvaluesubject
'iOS Combine (SwiftUI)' 카테고리의 다른 글
Comments