반응형

RxSwift - BehaviorSubject

 

BehaviorSubject는 Subject중 하나로, 최초 구독을 당하는 시점에 이전에 방출 된 값이 없다면 BehaviorSubject의 초기값을 방출하고 이미 방출 된 값이 있다면 최근의 값을 방출하는 Subject이다.

// 3이란 초기값을 가진 BehaviorSubject를 생성
let behaviorSubject = BehaviorSubject(value: 3)
	// 처음으로 구독하는 observer는 3의 값을 방출
    behaviorSubject.subscribe { value in
        print("First subscriber gets value: \(value)")
    }
    // 10의 값을 방출
    behaviorSubject.onNext(10)
    print("BehaviorSubject has already sent 10!")
    // 두번째로 구독하는 observer는 가장 최근의 값인 10을 방출 함
    behaviorSubject.subscribe { value in
        print("Second subscriber gets value: \(value)")
    }
    // 두개의 observer가 75를 동시에 방출
    behaviorSubject.onNext(75)

 

실행 결과

First subscriber gets value: next(3)
First subscriber gets value: next(10)
BehaviorSubject has already sent 10!
Second subscriber gets value: next(10)
First subscriber gets value: next(75)
Second subscriber gets value: next(75)

 

추가적으로, 중간에 만약 Error가 방출된다면 그 후 observer에겐 계속 Error를 전달하게 된다.

반응형

'iOS > Swift' 카테고리의 다른 글

[Swfit] Swift는 무엇일까?  (1) 2023.02.24
반응형

Swift는 iOS, iPadOS, macOS, tvOS, watchOS와 같은 Apple의 디바이스 위에서 동작하는 소프트웨어를 만드는데에 주로 사용되는 언어라고 할 수 있습니다.

다른 언어와의 차이점은 여러가지가 있지만, 제 생각에 가장 큰 차이점은 타입에 엄격하다는 점 같습니다.

저의 경우, JAVA를 가장 먼저 프로그래밍언어로 배우기 시작했기 때문에 이런 타입에 대해 엄격한 점은 친숙했습니다.

그리고 개인적으로 아주 매력적인 언어라고 생각합니다.

공식 홈페이지에도 언급된 것 처럼 대화하듯이 코딩을 하는 기분이 들기도 합니다.

배우기쉽다는 내용에 대해서는 동의하기 어렵지만, 어떤 언어든지 러닝커브가 존재하니 그 점을 생각해보면 나쁘지않을지도 모르겠습니다.

특히, Swift전에 사용하던 objcet-c의 경우엔 더 어렵지않을까 막연히 생각합니다.

아무튼 이런 Swift를 공부하고 공부해왔던 점을 바탕으로 이것저것 적어볼까 싶어 이 카테고리를 열었는데, 꾸준히 적도록 해야겠습니다.

https://developer.apple.com/kr/swift/

 

Swift - Apple Developer

Swift는 iOS, iPadOS, macOS, tvOS 및 watchOS를 위한 강력하고 직관적인 프로그래밍 언어입니다. Swift 코드 작성은 대화식으로 재미있고, 구문은 간결하면서도 표현력이 풍부하며, Swift에는 개발자들이 좋

developer.apple.com

 

 

반응형

'iOS > Swift' 카테고리의 다른 글

[Swift] RxSwift - BehaviorSubject  (0) 2023.03.03

+ Recent posts