일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- swiftUI
- UICollectionView
- map
- 리펙터링
- 리팩토링
- clean architecture
- swift documentation
- Protocol
- Xcode
- combine
- UITextView
- RxCocoa
- ios
- MVVM
- rxswift
- collectionview
- uiscrollview
- HIG
- Observable
- 애니메이션
- Clean Code
- SWIFT
- ribs
- 클린 코드
- 스위프트
- 리펙토링
- Human interface guide
- uitableview
- tableView
- Refactoring
- Today
- Total
목록rxswift (43)
김종권의 iOS 앱 개발 알아가기
핵심: Observable이 이벤트 방출, Oserver가 subscribe Observer Observable안에 있는 내부 인스턴스들로 Observable의 값에 변화가 있을 때 didSet 원리로 Observer에게 알림이 가고, Observer가 등록한 closure를 실행 Observable Observer 인스턴스를 가지는 상태 value 인스턴스를 가지고 있다가, value가 변경되면 didSet을 통해 아이템 방출 Subscribe observe()의 의미와 동일 Observable의 값이 변경될 때마다 '특정 작업'을 위한 closure블럭을 같이 넘김으로서 그 closure블럭이 실행되게끔 설정 Subject Observable과 Observer의 성격 모두 가지고 있는 Protocol..
UIControl 이벤트의 종류 개념 * 출처: daheenallwhite.github.io/ios/2019/07/24/Target-Action/ UIControl.Event touchDown 컨트롤을 터치했을 때 발생하는 이벤트 touchDownRepeat 컨트롤을 연속 터치 할 때 발생하는 이벤트 touchDragInside 컨트롤 범위 내에서 터치한 영역을 드래그 할 때 발생하는 이벤트 touchDragOutside 터치 영역이 컨트롤의 바깥쪽에서 드래그 할 때 발생하는 이벤트 touchDragEnter 터치 영역이 컨트롤의 일정 영역 바깥쪽으로 나갔다가 다시 들어왔을 때 발생하는 이벤트 touchDragExit 터치 영역이 컨트롤의 일정 영역 바깥쪽으로 나갔을 때 발생하는 이벤트 touchUpIn..
* 사용되는 라이브러리 - RxSwift - RxCocoa - RxTest (RxSwift의 스트림들을 테스트 할 수 있는, 가상 시간을 함께 이벤트를 발생시킬 수 있는 프레임워크) - RxNimble (expect라는 함수로 명료하게 테스트를 할 수 있게 해주는 프레임워크) 1. 간단한 RxSwift, MVVM구조 설계 RxSwift구조 코드 참고: ios-development.tistory.com/173 2. Unit 테스트 코드 작성 1) Nimble프레임워크에서 사용 할 events함수 정의 import Foundation import RxSwift import RxTest import Nimble import RxNimble // Tests그룹 하위에, ExpectationExtensions.s..
retry() 연산자를 사용하여 에러처리 retry() 가장 간단한 방법, 에러가 발생할 경우 시퀀스를 재생성하여 Error가 나지않도록 처리 func retry() -> Observable retry(_ maxAttemptCount:) 횟수를 제한할 수 있는 에러처리 func retry(_ maxAttemptCount:) -> Observable retryWhen(_ notificationHandler:) notificationHandler의 타임은 TriggerObservable (= Observable이거나 Subject 형) func retryWhen(_ notificationHandler:) -> Observable 사용방법 만약 RxSwift를 쓰지 않는다면, NSOperation이나 GCD를..
Delegate Proxy란? delegate를 사용하는 부분을 RxSwift로 표현할 수 있도록 하는 것 * 원리 : DelegateProxy.swift 파일과 DelegateProxyType.swift 이용 * Delegate개념 : 함수 실행위치를 미리 선언해 놓고, 구현은 직접 하라고 delegate시키는 것 -> (protocol로 선언) import UIKit import RxSwift import RxCocoa protocol MyDelegate { func willStart() func end() } class UISomething: NSObject { var delegate: MyDelegate? = nil func start() { delegate?.willStart() // 이 함수를..
custom extension이란? 객체.rx.함수접근이 가능하게끔 표현 첫 번째 방법, Binder * Oberver only (Observable처럼 값을 받아서 처리한다는 개념이 아닌, 함수처럼 안에서 수행하라는 의미) * Main Scheduler에서 수행하는 것이 default class ViewController: UIViewController { let bag = DisposeBag() override func viewDidLoad() { super.viewDidLoad() let obs = Observable.of(true) rx.myCustom.onNext(false) // observer라 가능 rx.myCustom.subscribe // observer라 불가능 obs.asDriver..
MVVM ViewModel은 데이터를 바꾸기만 함 (View에 어떤 화면을 그러야 하는지 안알려주고, View가 subscribe하고 있음) 그냥 데이터만 갖고 그 값만 바꾸고 있는 애 UI에 관한 요소는 건들지 않음 —> bug가 발생할 위험은 UI가 아니라 logic적인 부분이므로,, 버그가 발생할 확률이 줄어듦 Testable이라는 것은 UI정보가 없어야 가능 정리 ViewContoller : UI에 대한 업데이트만 관리, view model을 subscribe하면서 UI업데이트 view model : logic에 대한 것만 관리 비교) 1. recall - View에서 커멘드를 입력 받아, ViewModel에서 데이터를 가공하여 View에 바인딩 - ViewModel쪽에 Reactive로 만들어서..
1. Buffering Operators 1) share(replay:), share(replay:scope:) 과거의 이벤트들을 subscriber에게 emit - replay 파라미터 : 버퍼사이즈 (얼마만큼의 element를 새로운 subscriber에게 emit할 것인지 - scope 파라미터 : subscriber의 수가 1에서 0으로 될 때 다음 동작 .whileConnected : 공유되고 있던 stream의 cache삭제 .forever : stream의 cache를 삭제하지 않음 이밖의 메소드 - replay(_:) - replayAll() - multicast(_:) - publish() 2. Time-shifting operators 이벤트 emit에 delay를 시킬 수 있는 연산자..