일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 애니메이션
- Human interface guide
- ios
- rxswift
- UICollectionView
- RxCocoa
- Clean Code
- uiscrollview
- 리펙토링
- Refactoring
- 리펙터링
- swift documentation
- Observable
- 클린 코드
- 스위프트
- collectionview
- clean architecture
- UITextView
- SWIFT
- HIG
- 리팩토링
- tableView
- Protocol
- combine
- swiftUI
- uitableview
- MVVM
- Xcode
- ribs
- map
- Today
- Total
목록Observable (18)
김종권의 iOS 앱 개발 알아가기
사용한 framework pod 'RxSwift' pod 'RxCocoa' 시작, 취소 기능을 Observable로 구현 DispatchWorkItem과 Operation을 사용하여 task들을 관리할 수 있지만 Observable를 사용하면 더욱 단순화 * Operation 포스팅 글 참고 * DispatchWorkItem 포스팅 글 참고 Observable을 사용하면 다양한 Rx 연산자 사용이 가능하여 다른 기능을 붙이기에 용이 시작, 취소 기능 구현 아이디어 시작 기능 시작 버튼을 탭하면 task를 시작하고, 만약 기존에 task가 실행중이면 내부적으로 취소한 후 실행 Observable로 task를 관리하면, disposeBag = DisposeBag()과 같이 초기화하여 기존 작업을 손쉽게 취소..
참고) RxSwift6 기준, RxSwift: Observable, Observer, Producer, Binder RxCocoa: ControlEvent Observable, Observer, Producer 형태 RxSwift 프레임워크 안에 존재 Observable의 구조 ObservableConvertibleType 프로토콜 asObservable() 메소드 구현을 강제화 Observable로 변환할 수 있는 타입이면, asObservable 메소드가 존재 public protocol ObservableConvertibleType { associatedtype Element func asObservable() -> Observable } ObservableType ObservableType은 s..
1. Observable로 Wrapping하여 권한 요청) 위치 권한, 실시간 위치 정보 획득 2. Observable로 Wrapping하여 권한 요청) 사진 권한, 카메라 권한 3. Observable로 Wrapping하여 권한 요청) 마이크 권한, ATT(App Tracking Transparency) 권한 4. Observable로 Wrapping하여 권한 요청) RxSwift의 concat을 이용하여 순서대로 권한 요청 방법 Observable로 wrapping 작업 핵심 기존에 Observable 형태를 리턴해주는 작업이면, RxSwift의 생성자 연산자 중에 deferred 연산자 사용하여 wrapping 기존에 Observable 형태가 아니고 클로저 형태로 값을 받는 경우, create 연..
1. Observable로 Wrapping하여 권한 요청) 위치 권한 요청, 실시간 위치 정보 획득 2. Observable로 Wrapping하여 권한 요청) 사진 권한, 카메라 권한 3. Observable로 Wrapping하여 권한 요청) 마이크 권한, ATT(App Tracking Transparency) 권한 4. Observable로 Wrapping하여 권한 요청) RxSwift의 concat을 이용하여 순서대로 권한 요청 방법 Observable로 wrapping 작업 핵심 기존에 Observable 형태를 리턴해주는 작업이면, RxSwift의 생성자 연산자 중에 deferred 연산자 사용하여 wrapping (해당 글) 기존에 Observable 형태가 아니고 클로저 형태로 값을 받는 경우..
Subject 기본 개념 Observable과 Observer의 성격을 모두 가지고 있는 프로토콜 Observable의 성격: subscribe을 하여 이벤트를 수신할 수 있는 상태 Observer의 성격: subscribe한 대상들을 내부에서 기록하고 있는 상태 (= subscribe한 대상들을 알고 있기 때문에, 여러번 Observable에 이벤트를 emit이 가능) (= multi case) // 프레임워크 없이 직접 구현한 MySubject.swift public final class MySubject { struct Observer { weak var observer: AnyObject? let block: (Value) -> Void } private var observers = [Observ..
핵심: Observable이 이벤트 방출, Oserver가 subscribe Observer Observable안에 있는 내부 인스턴스들로 Observable의 값에 변화가 있을 때 didSet 원리로 Observer에게 알림이 가고, Observer가 등록한 closure를 실행 Observable Observer 인스턴스를 가지는 상태 value 인스턴스를 가지고 있다가, value가 변경되면 didSet을 통해 아이템 방출 Subscribe observe()의 의미와 동일 Observable의 값이 변경될 때마다 '특정 작업'을 위한 closure블럭을 같이 넘김으로서 그 closure블럭이 실행되게끔 설정 Subject Observable과 Observer의 성격 모두 가지고 있는 Protocol..
Observable 아이템을 소유하고 있고 일정 기간 계속해서 이벤트를 비동기적으로 방출(emit) ObservableConvertibleType 가장 최상위에 위치한 프로토콜이며, 기본으로 asObservable이라는 메소드가 있으며 asSingle , asDriver , asSharedSequence 세가지 유형의 확장 메소드가 존재 // // ObservableConvertibleType.swift // RxSwift // // Created by Krunoslav Zaher on 9/17/15. // Copyright © 2015 Krunoslav Zaher. All rights reserved. // public protocol ObservableConvertibleType { associate..
1. 구독을 공유해서 사용하는 방법 (Sharing subscriptions) 구독을 공유하는 주체 : Observable 1) 공유해서 사용하지 않은 경우의 문제점 여러 곳에서 subscribe()를 사용한다면 동기화에 문제 발생 var start = 0 func getStartNumber() -> Int { start += 1 return start } let numbers = Observable.create { observer in let start = self.getStartNumber() observer.onNext(start) observer.onNext(start+1) observer.onNext(start+2) observer.onCompleted() return Disposables.cr..