안녕하세요 Hani입니다. 이번에는 asSingle 알아볼 거예요. API 호출은 Single이나 Completable 등 한 번에 끝나는 경우가 대부분입니다. 하지만 배너 광고처럼 지속적으로 값을 받아와야 할 때는 Observable로 Stream을 살려둡니다. 만약 API 호출 후 Observable로 Stream을 반환하는 메서드만 구성해두었다면 이를 Single로 변환할 필요가 종종 있습니다. observable.asSingle() Observable은 error, completed를 방출할 때까지 element를 보낼 수 있고, Single은 한 번의 Success 혹은 Failure를 보낼 수 있습니다. AsSingle을 살펴보면 element가 두 번째 방출될 때 RxError.moreTha..
안녕하세요 Hani입니다. 이번에는 복수의 Observable을 결합시켜주는 operator에 대하여 알아보겠습니다. CombineLatest 가장 마지막에 방출한 item을 결합하여 새로운 item을 만들어내는 combineLatest입니다. 두 source중 하나라도 item이 없으면 아무런 item도 새로 만들어내지 않습니다. 두 source가 전부 complete되어야 Observable이 complete되는군여 🔥 Merge source들이 방출하는 item을 시간 순서대로 병합시켜주는 merge입니다. 두 source가 전부 complete되어야 Observable이 complete됩니다. Concat merge와 비슷하지만 Observable에만 적용할 수 있는 concat입니다. 한 Obs..
안녕하세요 Hani입니다. 이번엔 Observable의 item을 변환시켜주는 Operator에 대하여 알아보겠습니다. 🔥🔥 Buffer Observable의 item을 일정 개수 묶어서 버퍼에 저장한 후, 방출하도록 만드는 Operator인 Buffer입니다. item이 없는 게 확실해질 때까지 배열에 담기 때문에, 마지막엔 빈 배열을 방출하는 것을 볼 수 있습니다. range처럼 데이터가 이미 Observable에 있는 경우는 곧바로 출력이 되지만 interval같이 일정 시간 간격으로 들어오는 item은 timeSpan마다 최대 count만큼 배열에 묶여 방출됩니다. count만큼의 item이 없으면 없는대로 방출합니다. interval이나 buffer가 시간 보장이 안 되는 것 같습니다. 🥺 왜 ..
안녕하세요 Hani입니다. 이번에는 observe, subscribe에 대하여 알아보겠습니다. 코드를 한 번 살펴보죠 🧐 위 코드는 Observable이 생성(generate)되고 소멸(dispose)되기까지의 뼈대입니다. 첫째 줄에 create operator가 등장했는데 이렇게 Observable을 반환하는 operator가 호출됐다고 해서 Observable이 바로 생성되는 것은 아닙니다. 단지 Observable이 어떻게 생성될지 정의한 것뿐입니다. 🥺 그럼 map, filter등의 operator를 적용하면 생성되나? 아니 🔥 아니 그럼 언제 Observable이 생성되는데? 😡 그 언제는 바로 subscribe operator가 Observable에 적용될 때, 즉, Observer가 Obse..
안녕하세요 Hani입니다. 이번엔 RxSwift 클로저 강한 순환 참조 및 메모리 누수에 대하여 알아보겠습니다. 실험 방법은..! 버튼을 누르면 해당되는 뷰 컨트롤러가 push되고 Observable이 1만 번 생성됩니다. 그리고 뷰컨을 다시 pop해서 돌아올 거예요. 이때 메모리 누수가 생기는 지 메모리 변화를 보면서 알아보겠습니다. 그럼 시작 🔥 1번 실험 Observable이 종료(onCompleted/onError)되지도 않았고, subscribe이후에 Disposable이 DisposeBag에 들어가지도 않았습니다. 3번 push/pop을 반복한 모습입니다. push했을 때 메모리 사용량이 증가했지만 pop했을 때 로그에 deinit이 찍히지 않았고 메모리 사용량도 감소하지 않았습니다. 요런 모..
안녕하세요 Hani입니다. 오늘은 Subject에 대하여 알아볼 거예요. 간단히.. 정말 간단히 🙏 Subject는 Observable와 Observer의 성격을 둘 다 가지고 있는 놈입니다. 각 역할을 짧게 말하면 Observable은 Observer에게 event를 전달하고, Observer는 Observable을 subscribe하여 들어오는 event에 대한 처리를 합니다. Subject는 Observable와 Observer의 역할을 동시에 수행할 수 있기 때문에, Observer로서 하나 이상의 Observable를 subscribe할 수 있고, Observable로서 event를 전달할 수 있습니다. RxSwift가 제공하는 Subject에는 4가지 종류가 있는데, 하나 씩 알아보겠습니다...
- Total
- Today
- Yesterday
- Testable
- WWDC16
- WWDC17
- CPU와 Memory
- 벨만포드 알고리즘
- HIG
- 최단경로 문제
- 최대 매칭
- 컴퓨터 추상화
- WWDC21
- rxswift
- IOS
- MeTal
- State Restoration
- 네트워크 플로우
- 최단경로문제
- 벨만포드 시간복잡도
- test coverage
- 네트워크 유량
- WWDC19
- 최단경로 알고리즘
- observeOn
- 부스트캠프 6기
- mach-o
- 강한 순환 참조
- 다익스트라 시간복잡도
- 코딩대회
- 포드 풀커슨 알고리즘
- 에드몬드 카프 알고리즘
- CompositionalLayout
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |