[Swift] Reactive Programming Combine - 6: Time manipulation
Language/Swift2024. 5. 16. 13:49[Swift] Reactive Programming Combine - 6: Time manipulation

Time Manipulation Operatorsdelay1초마다 값을 방출하는 publisher에서 값을 지연하여 방출할 수 있습니다.let valuesPerSecond = 1.0let delayInSeconds = 1.5let sourcePublisher = PassthroughSubject()let delayedPublisher = sourcePublisher.delay(for: .seconds(delayInSeconds), scheduler: DispatchQueue.main)let subscription = Timer .publish(every: 1.0 / valuesPerSecond, on: .main, in: .common) .autoconnect() .subscribe(sourcePu..

[Swift] Reactive Programming Combine - 5: Combining Operators
Language/Swift2024. 5. 11. 13:18[Swift] Reactive Programming Combine - 5: Combining Operators

Combining Operatorsprepend... synctax를 사용하여 다양한 값(원래 publisher와 동일한 유형)의 목록을 받습니다.let publisher = [3, 4].publisherpublisher .prepend(1, 2) .sink(receiveValue: { print($0) }) .store(in: &subscriptions) // *--- RESULUT ---*// 1// 2// 3// 4 prepend 연산자가 체인 연결을 하는 것은 접두사로 추가한다는 의미입니다.그렇기에 연산자의 순서가 중요합니다.let publisher = [3, 4].publisherpublisher .prepend(1, 2) .prepend(3, 4) .sink(receiveValue..

[Swift] Reactive Programming Combine - 4: Filtering Operators
Language/Swift2024. 5. 8. 21:48[Swift] Reactive Programming Combine - 4: Filtering Operators

Filtering Operatrosfilter어떤 값을 전달할 지 조건부로 결정하는 filter입니다.var subscriptions = Set()let numbers = (1...6).publishernumbers .filter { $0.isMultiple(of: 2) } .sink(receiveValue: { print($0) }) .store(in: &subscriptions)// *--- RESULT --*// 2// 4// 6 removeDuplicates동일한 값을 연속으로 내보내는 publisher를 무시합니다.let words = "hey hey there! want to listen to mister mister ? ? ?" .components(separatedBy..

[Swift] Reactive Programming Combine - 3: Transforming Operators
Language/Swift2024. 5. 8. 11:56[Swift] Reactive Programming Combine - 3: Transforming Operators

Transforming Operatorspublisher로부터 오는 값에 대해 연산을 수행하는 메서드를 Operators라고 합니다.Cominbe operator들은 실제로 publisher를 반환합니다. 해당 publisher의 upstream 값을 수신하고 데이터를 조작한 다음 downstream으로 보냅니다.개념적으로 간소화하기 위해 연산자를 사용하고 오류를 처리하는 게 목적이 아니라면 오류를 downstream에 게시할 뿐입니다. collectpublisher의 개별 값 stream을 해당 값의 배열로 변환합니다. ["A", "B", "C", "D", "E"].publisher .sink(receiveCompletion: { print($0 }, receiveValue: { ..

[Swift] Reactive Programming Combine - 2: Publishers & Subscribers
Language/Swift2024. 5. 4. 00:00[Swift] Reactive Programming Combine - 2: Publishers & Subscribers

Publishers & SubscribersCancellableSubscriber가 완료될 때, 더 이상 publisher로부터 값을 받지 않으려면 subscription을 취소하여 리소스를 확보하고 네트워크 호출과 같은 해당 활동이 발생하지 않도록 하는 것이 좋습니다. Subcription은 cancellation token으로 AnyCancellable 인스턴스를 반환하므로, 완료되면 취소할 수 있습니다. AnyCancellable은 Cancellable protocol을 준수하며, cancel()메서드는 정확히 그 목적을 위해 필요합니다.  Subsciption에서 cancel()을 명시적으로 호출하지 않으면, publisher가 완료하거나 정상적인 메모리 관리로 인해 저장된 subscription..

[Swift] Reactive Programming Combine - 1
Language/Swift2024. 5. 1. 23:55[Swift] Reactive Programming Combine - 1

What is Combine?이벤트 처리 연산자를 결합하여 비동기 이벤트 처리를 사용자 지정합니다. Combine 프레임워크는 앱이 이벤트를 처리하는 방식에 대한 선언적 접근 방식으로 제공합니다.Combine을 채택하면 이벤트 처리 코드를 일원화(centralizing)하고 중첩 클로저 및 convention을 기반하는 콜백과 같은 번거로운 기술을 제거하여 코드를 더 쉽게 읽고 유지 관리 할 수 있습니다. 여기서 말하는 일원화는 특정 이벤트 소스에 대해 단일 처리 체인으로 만드는 걸 의미합니다. 체인의 각 부분은 이전 단계에서 받은 요소에 대해 고유한 작업을 수행하는 결합 연산자입니다. Apple에서 비동기 프로그래밍을 개선하였고 몇 가지 메커니즘이 있습니다.NotificationCenter: 디바이..

[Swift] Protocol-Oriented Programming: POP
Language/Swift2024. 4. 30. 23:12[Swift] Protocol-Oriented Programming: POP

객체 지향 프로그래밍: OOPObject-Oriented Programming(OOP) 객체 지향 프로그래밍은 디자인 철학입니다.객체는 객체의 속성에 대한 정보를 포함하는 데이터 구조입니다.객체는 현실 세계에서 나무가 될 수도 호수가 될 수도 있습니다. Beer 라는 class로 표현을 해보면 이니셜라이저로 인스턴스가 생성될 때 모든 프로퍼티가 올바르게 초기화되도록 합니다.class Beer { var volume: Double var canSize: Double var description: String init(volume: Double) { self.volume = volume self.canSize = 500 self.descriptio..

UIActivityViewController 공유하는 그거
Language/Swift2024. 3. 8. 00:14UIActivityViewController 공유하는 그거

아이폰 기본 앱에 있는 공유 버튼은 위 사진과 같이 공유를 할 수 있게 됩니다. 그것을 사용하기 위해서는 UIActivityViewController를 띄우기만 하면 끝입니다. UIActivityViewController는 무엇일까? 항목 복사, 소셜 미디어 사이트에 콘텐츠 게시, 이메일 또는 SMS를 통한 항목 전송 등과 같은 몇 가지 표준 서비스를 제공하는데 사용하는 ViewController 라고 되어있습니다. 그리고 iPad에서는 popover에서 표현해야 하고 iPhone 및 iPod touch 에서는 모달로 표시해야 합니다. H.I.G 에서 말하는 Activity View는 무엇일까? 자주 사용하는 앱에 빠르게 액세스할 수 있을 뿐만 아니라 메시징과 같은 공유 활동과 복사 및 인쇄와 같은 작업..

image