일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- swift documentation
- Refactoring
- swiftUI
- 클린 코드
- rxswift
- 리팩토링
- HIG
- Observable
- uitableview
- 애니메이션
- Protocol
- 리펙터링
- ribs
- SWIFT
- combine
- Clean Code
- ios
- map
- 리펙토링
- Human interface guide
- clean architecture
- UITextView
- 스위프트
- MVVM
- Xcode
- UICollectionView
- uiscrollview
- RxCocoa
- collectionview
- tableView
- Today
- Total
목록debounce (3)
김종권의 iOS 앱 개발 알아가기
기초 지식) Throttle와 Debounce 개념 throttle을 10초로 걸어놓은 경우, 이벤트가 3번 발생했을 때 첫번째 이벤트만 10초후에 실행 debounce를 10초로 걸어놓은 경우, 이벤트가 3번 발생했을 때 마지막 이벤트가 발생하고 나서 10초후에 실행 (이벤트가 도중에 들어오면 또 10초 연장된 후 발행) 차이점? throttle은 무조건 10초안에 이벤트가 하나씩 발행되고, debounce는 10초가 지나기 전에 또 다른 이벤트가 들어오면 다시 10초 딜레이 후 마지막 이벤트를 실행 사용처 throttle: 버튼 탭 debounce: 검색 입력 Debounce 직접 구현해보기 Debouncer 클래스 선언 class Debouncer { } 일정 seconds 후에 실행되어야하므로 ..
DispatchQueue 개념 Thread pool을 thread safe하게 관리하는 객체 멀티 스레드에서도 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 발생하지 않는 것 Thread를 다루는 GCD(Grand Central Dispatch) 중 하나 DispatchQueue의 종류 3가지 1) main (serial) main thread에서 처리되는 serial queue (모든 UI관련 작업은 해당 큐에서 main queue에서 실행) 2) global (concurrent) 전체 시스템에서 공유되는 concurrent queue이고, concurrent이기 queue끼리의 우선순위를 위해서 queue를 사용할 때 QoS 설정 필요 userI..
debounce 입력 -> 바로 입력 안되고 대기 -> 일정 시간 후 입력 주로 텍스트 필드 입력에 사용 코드 (쉬운 예시를 위해서 버튼 입력에 적용) btnDebounce.rx.tap.asDriver() .debounce(.seconds(3)) .drive(onNext: { (_) in self.debounceCount += 1 self.lblDebounce.text = "\(self.debounceCount)" }).disposed(by: disposeBag) throttle 입력 - > 바로 입력 -> 대기 주로 버튼 중복 입력 방지에 사용 코드 btnThrottle.rx.tap.asDriver() .throttle(.seconds(3)) .drive(onNext: { (_) in self.thro..