TIL #12

Donghee Lee·2022년 11월 14일
0

TIL

목록 보기
12/18

오늘 한 일.

  • 프로그래머스 3문제 풀이
  • RxSwift 내부 구조 맛보기
  • 정렬 알고리즘(삽입 정렬, 퀵 정렬, 계수 정렬) 구현해보기
  • 예비군 원격 교육

새로 배운 것.

  • 퀵 정렬할 때 pivot과 같은 값이 있는 경우 .filter { $0 == pivot }으로 만들어서 리턴하면 중복된 데이터도 배열로 같이 리턴할 수 있다.

  • 이진탐색도 복습했는데 문제를 더 풀어봐야할 것 같다.

  • 타입 프로퍼티는 자동으로 lazy로 작동한다.

  • RxSwift에서 가장 많이 쓴? Observable부터 알아봤다.

  • Observable은 ObservableType 프로토콜을 상속하고, 내부에는 추상 메서드인 subscribe, asObservable이 있다.
    즉, subscribe, asObservable은 Observable class의 메서드가 아니라 ObservableType의 추상메서드다.
    모든 Observable들은 ObservableType 프로토콜에 대한 구현체를 갖고 있다.

  • asObservable 메서드에는 Observable.create 메서드가 사용되는데, 타입 메서드로 정의되어 있다.
    create 함수는 전달받은 subscribe 메서드의 구현체를 인자로 넘겨 AnonymousObservable 인스턴스를 반환하고 있다.

  • AnonymousObservable class는 인자로 전달받은 subscribe 메서드를 SubscribeHandler라는 이름의 typealias로 갖고 있다.

  • 이 class에는 run 메서드가 유일한데, sink와 subscription이라는 Disposable을 튜플로 묶어서 반환해 준다.

  • 여기서 sink는 AnonymousObservableSink의 인스턴스를 저장하고 있다.

  • subscription은 위 AnonymousObservableSink의 메서드 중 run을 호출한 결과를 저장하고 있는데, run 호출 시 인자로 받은 Observer가 아니라 현재 인스턴스의 자기 자신을 전달한다.

  • AnonymousObservableSink 안에는 on 메서드가 있다.

  • 이 메서드는 전달된 이벤트에 따라 next가 전달되면 forwardon이라는 메서드를 호출하고, error/completed 이벤트에는 forwardon 이후에 dispose해서 시퀀스를 종료시킨다.

내일 일정.

프로그래머스 알고리즘 2문제 이상 풀기
네트워크 좀 더 딥하게 공부
자료구조 학습

오늘 느낀 점.

할 게 너무 많다... 진짜로...
틈틈이 RxSwift도 파헤쳐 봐야겠다.
놀자고 연락오는 친구들에게 다 거절하고 있는 상황이 너무 힘들고 미안하다. 그래도 연락줘서 고마워..

profile
Better than Yesterday

0개의 댓글