일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- URLSession
- Combine
- delays deallocation
- ReactorKit
- AVCaptureSession
- readLine
- Asnyc
- Custom Class
- BidirectionalCollection
- UIResponder
- moya
- hitTest
- UserDefaults
- weak self
- RxSwift
- vtable
- input
- Responder chain
- async
- 사내배포
- swift
- ios
- 입력
- binder
- 공백
- MaxHeap
- reversed
- DISPATCH
- Python
- 전자출입
- Today
- Total
목록전체 글 (24)
틈틈히 적어보는 개발 일기
최근 정해진 컨벤션이 조금씩 달라지고, 레거시를 최신화하고, 사용하던 컨벤션을 새로운 구성원에게 전달할 일이 생기면서 문서와 구두로 전달하기보다 이를 정형화하고 싶은 생각이 들었다 그러다 찾아낸 것이 Xcode Template를 활용하는 것! 컨벤션의 정형화가 잘 되어 있고 구성원들과 함께한지 오래되었다면 이러한 Template를 만드는 것이 오히려 귀찮음으로 다가올 수 있다 그러나 Xcode Template를 만들고 사용하게 되면 코드의 위치가 섞이거나 오탈자 등의 Human Error를 줄일 수 있기도 하다 그래서 이번글은 Xcode에서 나만의 Template를 만드는 법과 내가 실제로 활용하고 있는 Template를 공유해보고자 한다 템플릿 추가하기 커스터마이징 하는 법을 알아보기 전에 Templa..
Filtering basics 💡 기본적으로 filter {...} 의 효과와 동일함! 클로저 내부 결과(Bool)가 true이면 스트림이 지속되고, false라면 스트림이 걸러지게 됨 ⭐️removeDuplicates() RxSwift의 distinctUntilChanged() 와 동일 이전과 동일한 값이 방출될경우 해당 스트림을 필터링 함 Compacting and ignoring 💡 종종 publisher가 Optional 값을 방출하는 경우가 있거나 이벤트가 nil을 반환하는 경우가 있다! 이러한 이벤트를 다뤄보도록 하자 compactMap 클로저 내부 값이 대해 Optional이면 본래의 값을, nil 이라면 해당 이벤트를 방출하지 않음 ignoreOutput() 모든 이벤트를 무시함. 단 co..
Getting started Operators Are publishers 여기서는 에러핸들링에 대한 내용 보다는 operator를 이용한 스트림의 변화에 대해 알아볼것이다~ Collecting values .collect() 스트림을 모두 모아 하나의 array 로 반환합니다 💡 주의: 다른 counting or limit이 없는 buffering operators와 같이 사용할 경우 collect에 값을 계속 담게되어 이벤트가 방출하지 않아 메모리 누수가 일어날 수 있음 Mapping values .map(_:) 발생하는 이벤트를 각각 매핑하여 다른 형태로 변환 .tryMap(_:) try가 가능한 .map(_:) try 문이 실패 시 스트림의 Error에 해당하는 failure(Error) 이벤트를 ..
Hello Publisher publisher는 두가지 이벤트를 방출함 값 (as element) completion event Hello Subscriber Subscribing with sink(_: _:) RxSwift의 subscribe(onNext: ) 와 동일 // Code Just(["myung", "sub"]) .sink(receiveCompletion: { print("오늘 스터디는?? \\($0)") }, receiveValue: { print("스터디 참가자: \\($0)") }) // Result 스터디 참가자: ["myung", "sub"] 오늘 스터디는?? finished Subscribing with assign(to:on:), assign(to: ) KVO 방식으로 값을 할당..
애플이 말하는 컴바인이란? “The Combine framework provides a declarative approach for how your app processes events. Rather than potentially implementing multiple delegate callbacks or completion handler closures, you can create a single processing chain for a given event source. Each part of the chain is a Combine operator that performs a distinct action on the elements received from the previous step.” - ..
⚠️요약 아래 Flow는 VC의 Bind(reactor: )에서 - View의 Input(Action)을 Reactor와 연결 - View의 Output(State)을 Reactor와 연결 1. UI의 Input을 Reactor.Action.— 로 mapping 후 reactor.action에 bind를 걸어 input 수행 ㄴ 1-1(내부 Flow). 정의된 mutate함수 수행 결과(Observable)를 reduce 함수로 전달, reduce 함수가 state를 변화시킴 2. reactor.state를 UI에 bind를 걸어 output 수행 // MARK: - Code // 1. Action rx.viewWillAppear .mapToVoid() .map { Reactor.Action.fetch ..
⚠️ Binder 💡 왜 UIKit(RxCocoa).rx.text를 변경하는건 MainThread를 지정안해줘도 UI 에러가 뜨지 않는걸까?! → Binder로 래핑된 객체는 Bind가 MainThread에서 동작함을 보장함!!! 그래서 쓰레드를 지정해주거나 Drive를 걸지 않아도 에러가 나오지 않는 것
Chapter 5: Filtering Operators Ignoring operators ignoreElements() next로 방출되는 ‘모든' 이벤트를 무시합니다. 단 Error, Complete는 정상적으로 방출합니다. elementAt(Int) index 위치에 발생하는 이벤트’만’ 방출합니다. filter { … } 클로저 내부에 true인 필터에 대한 이벤트를 방출합니다. skip(Int) Int 만큼의 이벤트를 무시합니다. skip(while: { … }) 클로저 내부에 해당하지 않는 조건이 나올때까지 이벤트를 무시합니다. 조건을 통과한 이후에는 모든 이벤트를 방출합니다. skip(until: ObservableType) 해당되는 ObservableType의 next가 트리거링 되기 전 까..
Chapter 3: Subjects Subject observable과 observer의 역할을 모두 한다. Observable과 Subject는 하나의 매우 중요한 차이를 가진다. Observable은 단지 하나의 함수이기 때문에 어떤 상태도 가지지 않으므로 모든 새로운 Observer에 대해 관찰 가능한 create 코드를 반복해서 실행한다. 코드는 각 관찰자에 대해 실행되므로 HTTP 호출인 경우 각 관찰자에 대해 호출된다. 이로 인해 주요 버그와 비효율이 발생한다. 반면 Subject는 관찰자 세부 정보를 저장하고 코드를 한 번만 실행하고 모든 관찰자에게 결과를 제공한다. 💡 Observable은 .create를 통해 생성되고 클로저 내부에 어떤 값을 반환할지 선언해둠. 그러니까 subscribe..