일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- scrolling tab
- swift
- Swift Package Manager
- List
- 스크롤 탭
- UIViewControllerTransitioningDelegate
- pod install
- Android
- notifychanged
- DataBinding
- SwiftUI
- GeometryReader
- url 관찰
- url 추적
- ViewBuilder
- oberve url
- Side Menu
- development language
- transformation.map
- swift #swift keychain #keychain 사용법
- DevelopmentRegion
- base64 변환
- ios
- Tuist
- UIPresentationController
- 기존 앱
- convert base64
- 개발자 면접
- detect url
- 상단 탭바
- Today
- Total
목록RxSwift (6)
버그 잡이
bind() 와 driver() 모두 UI 관련된 Observable 구독을 하기 위한 operator입니다. 둘 다 error 이벤트를 받지 않는다 는 특성이 있어 UI 바인딩에 적합 합니다. bind(to: ) 의 단점 result 라는 Observable이 있고 이를 bind()로 구독하는 세 개의 Observer가 있다고 가정해봅시다. observer1 observer2 observer3 ... 각각의 Observer가 추가될때마다 새로운 스트림이 실행됩니다. 즉, Observable을 구독하는 옵저버가 늘때마다 스트림도 같이 느는 것입니다. 하나의 스트림을 공유해서 같이 쓴다면 참 좋을텐데 불필요하게 낭비되는 리소스가 생기는 것 입니다. driver의 장점 driver는 스트림 공유를 가능하게 ..
RxSwift 에서 .subscribe()를 사용하면 Observable을 구독할 수 있습니다. 아래 코드는 emailView 터치를 구독하는 코드를 예시로 살펴보겠습니다. emailView.rx.tapGesture().when(.recognized).subscribe( onNext: { [unowned self] _ in self.sendEmail() }, onError: { error in }, onCompleted: { }) { } 정석적인 방법은 위처럼 subscribe() 안에 onNext, onError, onCompleted, onDisposed 에 따라 알맞은 코드를 각각 작성합니다. 그런데 아래와 같이 간단하게 작성할 수도 있습니다. emailView.rx.tapGesture().when..
Observable은 subscribe 이후 complete 또는 error 이벤트가 발생하기 전까지 계속 next 이벤트를 발생시킵니다. "계속" 이라는 단어는 프로그래머 입장에서 주의를 기울여야 하는 단어입니다. 계속 동작한다는 것은 굳이 동작하지 않아도 될 때도 동작한다는 것을 의미하고 이는 메모리 누수로 이어집니다. 오늘은 Observable을 subscribe(구독) 한 이후에 적절한 시점에 구독을 해지하는 방법에 대해서 알아보겠습니다. 1. Dispose 아래와 같이 observable을 구독하는 코드가 있습니다. subscribe() 메서드는 기본적으로 disposable을 반환합니다. disposable은 메모리 관리를 도와주는 객체입니다. (크게 리소스 취소와 실행 취소에 사용됩니다.) ..
RxSwift로 tableView를 보다 간단하게 구현할 수 있습니다. 구현 방식에도 여러 가지가 있는데 크게 tableView.rx.items 에 bind하는 방법 RxDataSource를 사용하는 방법 이렇게 두 가지 방법이 있습니다. tableView.rx.items 첫번째 방법은 가장 기본적인 방법으로 간단한 tableView 형태를 구현할 때 사용할 수 있습니다. data를 tableView에 bind하는 방식으로 기존에 Rx를 활용하여 data와 button을 바인딩 했던 것과 별반 다르지 않습니다. 차이점이 있다면 클로저 안에서 index, model, cell 변수가 주어져 이를 활용한 작업이 가능합니다. data의 특정 요소를 text로 넣는다거나 index에 따라 각기 다른 특정을 주는..
Swift에서 버튼 클릭시 동작을 설정하려면 addTarget을 통해서 함수를 연결하거나 오토레이아웃을 쓸 경우 @IBAction으로 연결할 수 있습니다. //addTarger을 활용한 방법 printLogBtn.addTarget(self, action: #seletor(printLog()), forControlEvents: .TouchUpInside) @objc func printLog() { print("clicked!") } //IBAction을 활용한 방법 @IBAction func printLog(btn: UIButton) { println("clicked!") } RxSwift를 통해서도 UIEvent를 받을 수 있습니다. let disposeBag = DisposeBag() button.rx..
RxSwift 를 활용하면 버튼의 활성화 상태를 보다 쉽게 제어할 수 있습니다. 이를 위해서는 먼저 RxSwift의 두 가지 Operator에 대해서 이해할 필요가 있습니다. Combine Latest 2개 이상의 Observable을 합쳐서 발행해줍니다. 근데 그 패턴이 좀 독특해서 그림으로 이해할 필요가 있습니다. combineLatest는 다음과 같은 특징이 있습니다. 1. 합쳐지는 observable 들이 각각 최초 발행해야 result가 생성된다. 2. 둘 다 onCompleted 되어야 onComplete된다. 3. error는 하나만 발생해도 error를 전달한다. (코드로 살펴보겠습니다.) let bag = DisposeBag() enum MyError: Error { case error ..