일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- swift documentation
- ios
- clean architecture
- rxswift
- 클린 코드
- Refactoring
- Observable
- Clean Code
- 리펙터링
- Human interface guide
- 애니메이션
- ribs
- UICollectionView
- uiscrollview
- uitableview
- Protocol
- collectionview
- SWIFT
- 리팩토링
- swiftUI
- MVVM
- combine
- 리펙토링
- tableView
- UITextView
- RxCocoa
- map
- 스위프트
- HIG
- Xcode
- Today
- Total
목록combine (16)
김종권의 iOS 앱 개발 알아가기
목차) Combine - 목차 링크 Susbscriber protocol이며 이 프로토콜을 준수하는 subscriber 인스턴스를 만들면, 이 subscriber로 다른 publisher를 구독하여 사용 구독했을때 처리가 이 Subscriber 구현체에서 처리 @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) public protocol Subscriber : CustomCombineIdentifierConvertible { associatedtype Input associatedtype Failure : Error func receive(subscription: Subscription) func receive(_ input: Self.Input..
목차) Combine - 목차 링크 Just 에러 타입은 항상 Never인 가장 단순한 형태의 Publisher Just(1) .sink { print("Just: \($0)") } // Just: 1 Just((1,2,3)) .sink { print("Just: \($0)") } // Just: (1, 2, 3) Just([1,2,3]) .sink { print("Just: \($0)") } // Just: [1, 2, 3] Sequence 주어진 Sequence를 방출하는 Publisher Publishers.Sequence(sequence: [1,2,3]) .sink( receiveCompletion: { print("receiveCompletion: \($0)") }, receiveValue: {..
목차) Combine - 목차 링크 Publisher Publisher는 단순히 이벤트 스트림에서 이벤트를 방출 시킬 수 있는 타입 extension으로 map, tryMap 등 다양한 연산자를 사용할 수 있어서 이벤트 스트림의 핵심 프로토콜 @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) public enum Publishers { } AnyPublisher Publisher 를 준수하고 있는 struct이며, Publisher를 wrapping하고 있는 가장 추상화된 Publisher @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *) @frozen public struct AnyPu..
목차) Combine - 목차 링크 Cancellable Combine 작업들을 취소할 수 있다는 의미를 가지고 있는 프로토콜 Combine에서는 이벤트 스트림을 action이라는 이름을 사용, action을 취소할 수 있는 프로토콜이 Cancellable이라는 의미 AnyCancellable final public class AnyCancellable : Cancellable, Hashable .sink로 이벤트를 구독하면 리턴값으로 AnyCancellable이 얻어지는데 이 값을 가지고 cancel()하여 언제든지 구독을 취소시킬 수 있는 기능 final class MyModel { @Published var number: Int init(number: Int) { self.number = numbe..
목차) Combine - 목차 링크 @Published propertyWrapper 형태이며 내부적으로 didSet에서 이벤트 방출하는 역할 @propertyWrapper public struct Published 사용하는 쪽에서는 $ 기호를 이용하여 projectedValue에 접근 propertyWrapper의 projectedValue 개념은 이 포스팅 글 참고 final class MyData { @Published var number: Int init(number: Int) { self.number = number } } let data = MyData(number: 20) data.$number .sink { print("change value? = \($0)") } data.number = ..
목차) Combine - 목차 링크 Combine과 RxSwift의 주요 차이점 Combine과 RxSwift 모두 Publisher, Subscriber하는 컴포넌트가 있고, stream을 만들어서 그 stream안에 operator를 사용하여 이벤트를 처리하는 형태 Combine은 RxSwift보다 성능이 훨씬 향상 ex) 성능 테스트 map, filter, flatMap 등을 결합한 연산자 시간과 메모리 사용량 비교 // 출처: https://medium.com/@M0rtyMerr/will-combine-kill-rxswift-64780a150d89 import XCTest import Combine import RxSwift final class PlaygroundTests: XCTestCase ..
목차) Combine - 목차 링크 Combine async 작업들을 이벤트 처리 연산자로 결합하여 처리하는 방법 선언적인 프로그래밍 형태로 사용 Stream하나를 만들고 그 Stream에 필요한 operator를 덫붙여서 사용하는 선언적인 프로그래밍 방식 // 선언형 프로그래밍인 Combine 예제 코드 $username .debounce(for: 0.1, scheduler: RunLoop.main) .removeDuplicates() .map { $0.count >= 2 } .assign(to: \.valid, on: self) .store(in: &cancellableSet) 선언적인 프로그래밍이 되면서, 클로저를 이용한 콜백지옥에서 벗어날 수 있는 장점이 존재 Combine을 사용하면 이벤트 처리..
Combine 기본 개념 Combine이란? Combine 훓어보기 - RxSwift와의 차이점 ObservableObject @Published, objectWillChange Cancellable (AnyCancellable) Publisher (AnyPublisher, Published) Publisher 생성 연산자 (Just, Sequence, Future, Fail, Empty, Deferred, Record) Subscriber (AnySubscriber) Subject (CurrentValueSubject, PassthroughSubject) Scheduler (receive(on:), subscribe(on:), delay(for:scheduler:)) Combine 연산자 Operato..