RxSwift의 메모를 읽었습니다.

10665 단어 memotech
RxSwift의 내부 설치를 염두에 두었기 때문에 기본 부분은 자신의 비망록을 읽었다
버전: RxSwiftv6.1
저장소 URL: https://github.com/ReactiveX/RxSwift

ObservableConvertibleType


ObservableConvertibleType.swift
/// Type that can be converted to observable sequence (`Observable<Element>`).
public protocol ObservableConvertibleType {
    /// Type of elements in sequence.
    associatedtype Element

    /// Converts `self` to `Observable` sequence.
    ///
    /// - returns: Observable sequence that represents `self`.
    func asObservable() -> Observable<Element>
}
  • 일반 프로토콜
  • associatedtypeElement
  • 주로 이 협의ObservableType 협의에 부합
  • ObservableType


    ObservableType.swift
    public protocol ObservableType: ObservableConvertibleType {
        func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element
    }
    

  • 해당ObservableConvertibleType 및 해당subscribe 방법
  • 이 프로토콜은 Observable<Element>클래스, 〜Relay클래스, SubjectType프로토콜 등 RxSwift를 실제 이용할 때 자주 사용하는 Observable
  • 에 적용된다.

    ObserverType


    ObserverType.swift
    public protocol ObserverType {
        associatedtype Element
    
        func on(_ event: Event<Element>)
    }
    
  • 감시 가능한 Observable에 대한 감시용 Observer의 일반 프로토콜
  • 매개 변수에 대한 채택Event<Element>on(_ event: Event<Element>)의 방법이 있다
  • Event<Element>는 정의next,error,completed 이벤트를 가리키는 enum
  • 상술한 등장인물의 관계도


    다음은 자신이 사용한 간단하고 알기 쉬운 요약 관계도(UML에 완전히 부합되지 않음)

    그렇군요. Observable는subscribe를 할 때ObserverType를 매개 변수로 합니다.ObserverType 재생 이벤트on 방법이 있기 때문에 subscribe 재생 이벤트를 사용할 수 있음ObserverType이렇게 하면'이벤트 흐름'처리가 가능하겠죠.

    조작자 Just 봐봐.


    조작원은 Observable를 받은 후 새로운 Observable를 생성하고 되돌아오는 함수를 가리킨다. 여기서 ElementNext이 이벤트에서 재생된 값just을 받아들인 조작원을 보고 싶다.
    Just.swift
    extension ObservableType {
        public static func just(_ element: Element) -> Observable<Element> {
            Just(element: element)
        }
    }
    
    보아하니just 운영자가 ObservableType의extension으로 선포된 것 같다
    또한just사업자가 되돌아오고 있음Just류 실례를 볼 수 있다
    이어서 저는 Just반을 보러 가고 싶습니다.
    Just.swift
    final private class Just<Element>: Producer<Element> {
        private let element: Element
        
        init(element: Element) {
            self.element = element
        }
        
        override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {
            observer.on(.next(self.element))
            observer.on(.completed)
            return Disposables.create()
        }
    }
    
    여기 just 운영자가 진행 중인 처리가 구체적으로 적혀 있는 것 같아요.
    Just 클래스 자체는 Producer<Element>클래스를 계승했고, Just 클래스의 subscribe방법은 Producer<Element>클래스의 subscribe방법으로 완성되었다.
    참고로 Producer<Element>류는 Observable<Element>류를 계승했고 Observable<Element>류는 ObservableType류에 부합subscribe협정에 부합되었다.
    Producer<Element> → Observable<Element> → ObservableType
    
    ObserverType 방법은 ObserverType를 매개 변수로 하는 방법입니다. 이on는 재생 이벤트ObserverType 방법이 있기 때문에subscribe에서 받아들인 매개 변수on를 이용하여 이벤트를 재생할 수 있습니다.
    subscribe에서 방송되는 활동은 선언 전에 쓴 바와 같이 다음과 같다.
            observer.on(.next(self.element))
            observer.on(.completed)
    
    먼저 next 이벤트에서 Element을 재생한 다음completed 진행
    just사업자next가 이벤트 중 Element을 재생한 후 completedObservable를 생성한 사업자로 거슬러 올라갈 수 있다
    이번에 RxSwift를 대충 읽어봤는데 잘못 읽거나 수정점이 있으면 지적해 주시면 좋을 것 같아요.

    좋은 웹페이지 즐겨찾기