BehavioSubject 에서 onNext 와 accept 의 차이를 이해해보자.
두 메서드는 RxSwift 에서 값을 방출하는 방법으로 사용된다.
✅ onNext vs accept 차이점
1. onNext (기본 메서드)
- onNext는 Observable에서 값을 방출할 때 사용된다.
- BehaviorSubject 외에도 PublishSubject, ReplaySubject 등에서도 동일하게 사용된다.
- onNext를 호출하면 구독자에게 해당 값을 즉시 전파한다.
let subject = BehaviorSubject(value: [1, 2, 3])
subject.onNext([4, 5, 6]) // 값이 [4, 5, 6] 으로 업데이트 됨
2. accept → RxRelay 에서 제공
- accept는 BehaviorRelay에서만 제공되는 메서드
- BehaviorRelay는 읽기 전용 값을 가지고 있으며, 값을 변경하는 것만 가능하다.
그래서 accept() 메서드를 사용해 값을 변경하는 방식으로 값을 방출한다. - accept()는 onNext()와 동작이 동일하지만, BehaviorRelay만 사용 가능하다.
let relay = BehaviorRelay(value: [1, 2, 3])
relay.accept([4, 5, 6]) // 값이 [4, 5, 6]으로 업데이트됨
3. 핵심 차이점 ⭐️
- onNext 는 BehaviorSubject, PublishSubject, RelaySubject 등에서 사용 가능하며, 방출된 값을 외부에서 읽을 수 있다!
- accept는 BehaviorRelay 에서만 사용 가능하며, 읽기 전용이지만 값을 안전하게 변경 가능하다!
👉 왜 accept()가 필요한가 ❓
BehaviorRelay는 외부에서 값을 직접 변경할 수 없도록 설계되어 있다.
대신 accept() 메서드를 통해서만 값이 변경 가능 → RxSwift의 일관성과 상태 관리에 대한 명확한 규칙을 제공
👉 BehaviorRelay는 읽기 전용으로 상태를 관리하고 싶을 때 사용하자!
BehaviorSubject와 BehaviorRelay (RxCocoa) 차이점을 정리해봐야겠ㄷ ㅏ..
'Devlog👩🏻💻 > Swift' 카테고리의 다른 글
[RxSwift] BehaviorSubject 🆚 BehaviorRelay 값 보관 스트림 (0) | 2025.05.22 |
---|---|
[Swift] compactMap vs filter (0) | 2025.02.19 |
[Swift] 초기화(Initializers) (0) | 2024.03.13 |
[Swift] Optional (3) | 2024.03.08 |
[Swift] 컬렉션 타입(Collection Type) - Dictionary, Set (2) | 2024.01.24 |