목록분류 전체보기 (179)
study record
combinelatest func combineLatest(_ other: P) -> Publishers.CombineLatest where P : Publisher, Self.Failure == P.Failure 추가적인 publisher를 구독한다. 그리고 다른 publisher로부터 받는 output을 publish한다. Return 값은 자기 자신과 다른 publisher의 요소들을 받고 결합하는 publisher이다. 언제 사용하는가? 다양한 publisher들이 값을 방출할 때 가장 최근 값의 튜플을 받고자할 때 사용한다. 다만, publisher들이 값 하나만을 방출했다면 combined publisher는 값을 방출하지 않는다. 다양한 publisher들로부터 요소들을 짝짓고 싶다면 zip..
Combine을 어떻게 사용할 수 있는지 기본 예제를 정리해보면서 익혀보자! 기본 자료구조 활용 예제(with .sink) let publisher = [1, 2, 3, 4].publisher publisher .sink { (value) in print(value) } Sequence.publisher 를 활용하여 배열에서 .publisher 프로퍼티를 활용해 간단하게 배열의 publisher를 구성할 수 있다. .sink를 통해 이를 구독하여 값들을 받아 볼 수 있다. .assign class Dumper { var value = 0 { didSet { print("value was updated to \(value)") } } } let dumper = Dumper() let publisher = ..
iOS의 Combine은 Framework이다.이벤트를 처리하는 operators들을 결합함으로써 비동기 이벤트들을 커스텀하게 다룬다.iOS 13 이상에서 사용이 가능하다. OverviewCombine framework는 값을 처리하기 위한 선언형 Swift API를 제공한다. 이 값들은 많은 비동기 이벤트들을 표현할 수 있다. Combine은 시간에 따라 변화할 수 있는 값들을 내보내기 위해 publishers를 선언하고, publishers로부터 이 값들을 받기 위해 subscribers를 선언한다. - Publisher protocol은 시간에 따라 값을 연속으로 전달할 수 있는 타입을 선언한다. Publishers는 upstream publishers로부터 받은 값들에 행동하는 operators를..
우리가 쓰레드 문제를 생각하게 되면 동기화 문제, 즉 여러 쓰레드에서 같은 데이터에 동시에 접근해서 충돌, 문제가 발생하는 것이 있다. 동일한 데이터에 접근하여 여러 곳에서 값을 변화시키다 보면 동기화 문제가 발생한다. 이를 디버깅하는 것은 어렵다. 이러한 동기화 문제를 피하기 위한 방법 중 하나로 Actor라는 개념이 있다. 다른 방법에는 (let 사용, 값 타입 사용(class를 struct로 변경 등), serial dispatchQueue 사용(매번 반드시 신중히 써야 한다.)) Actor Actor는 shared mutable state에 대한 동기화 메커니즘이다. Actor는 자신만의 상태를 가지며, 이 상태에 접근하는 유일한 방법은 Actor를 거치는 것이다. lock이나 serial dis..