jeonyeohun / Understanding-RxSwift-Internals

읽다보면 이해가 되는 알엑스 👀

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

코드관련 질문이 있습니다!

kimscastle opened this issue · comments

commented

저도 코드레벨에서 코드를 뜯어보고있는데 여쭤보고싶은게있어서 댓글남깁니다!
코드 뜯어보는 레퍼런스가 너무 없었는데 좋은글 감사드립니다!
제가 여쭤보고싶은부분은 asObservable관련부분인데요
create를 했을때 반환되는 객체가 AnonymousObservable이고

return Disposables.create(
    self.asObservable().subscribe(observer),
    disposable
)

해당코드에서 self가 AnonymousObservable일때
asObservable이라는 메서드를 ObservableType의 메서드가 실행되었다고 적어주셨는데
AnonymousObservable -> Producer -> Observable -> ObservableType
로 상속및 채택관계가 정의되어있을때
Observable자체에 asObservable이 정의되있습니다
그러면 기본 구현 메서드인

extension ObservableType {
    /// Default implementation of converting `ObservableType` to `Observable`.
    public func asObservable() -> Observable<Element> {
    // temporary workaround
    //return Observable.create(subscribe: self.subscribe)
    Observable.create { o in self.subscribe(o) }
    }
}

가 아닌 Observable의

public func asObservable() -> Observable<Element> { self }

가 실행되어야하는게 아닌가라는 의문이 들었습니다

실제로 bp를 찍어봐도 해당메서드가 불리는데 혹시 이부분관련해서 제가 생각하는게 맞는지 아니라면 어느부분에서 틀렸는지 여쭤봐도 될까요!