Raywenderlich/Combine: Asynchronous Programming
-
Chapter 20: In Practice: Building a Complete AppRaywenderlich/Combine: Asynchronous Programming 2020. 10. 11. 01:57
Version Swift 5.3, iOS 14, Xcode 12 Combine을 도입(introducing)하고 프레임 워크(frameworks) 전체에 통합(integrating)함으로써, Swift의 선언형(declarative), 반응형(reactive) 프로그래밍(programming)이 Apple 플랫폼(platforms)을 위한 미래의 최고 앱(apps)을 개발(develop)하는 일반적인(prevalent) 방법이라는 것을 명확히(clear) 했다. 마지막 세 섹션(sections)에서 멋진(awesome) Combine 기술을 습득(acquired)했다. 이 마지막 장(chapter)에서는 배운 내용을 활용(utilize)하여 Chuck Norris jokes을 가져올(fetch) 수 있는..
-
Chapter 19: TestingRaywenderlich/Combine: Asynchronous Programming 2020. 10. 4. 20:54
Version Swift 5.3, iOS 14, Xcode 12 통계(studies)에 따르면, 개발자가 테스트 작성을 생략(skip)하는 데에는 두 가지 이유가 있다: 버그가 없는(bug-free) 코드를 작성한다. 아직도 이것을 읽고 있어?(Are you still reading this)? - 무슨 의미인지 모르겠음... 항상 버그가 없는(bug-free) 코드를 작성한다고 똑바로(straight face, 정색하고) 말할 수 없다면 그리고 2 번 질문에 예라고 대답했다면, 이 장(chapter)이 필요하다. 테스트(tests)를 작성하는 것은 새로운 기능(features)을 개발(developing)하는 앱(app)에서 의도한(intended) 기능(functionality)을 보장(ensure)..
-
Chapter 18: Custom Publishers & Handling BackpressureRaywenderlich/Combine: Asynchronous Programming 2020. 9. 30. 19:16
Version Swift 5.3, iOS 14, Xcode 12 이 시점에서 Combine 프레임 워크(framework)에 누락된(missing) 연산자(operators)가 많다(plenty)고 느낄 수 있다. 이는 일반적으로(typically) 내장된(built-in) 연산자와 서드 파티(third-party)로 풍부한 연산자(operators) 생태계(ecosystem)를 제공하는 다른 반응형(reactive) 프레임 워크(frameworks)에 대한 경험(experience)이 있는 경우 특히(particularly) 그렇다. Combine을 사용하면, 자신만의(own) publishers를 만들 수 있다. 이 과정(process)은 처음에는 놀랄(mind-boggling) 수 있지만, 전적으로..
-
Chapter 17: SchedulersRaywenderlich/Combine: Asynchronous Programming 2020. 8. 31. 16:38
Version Swift 5.3, iOS 14, Xcode 12 이 책을 진행(progressing)하면서, 스케줄러(scheduler)를 매개 변수(parameter)로 삼는 여러 연산자(operator)에 대해 배웠다. 대부분의 경우(most often), 편리(convenient)하고, 잘 이해되고, 안전(safety)하기 때문에 DispatchQueue.main을 사용한다. 개발자로서 최소한 DispatchQueue가 무엇인지에 대한 일반적인(general) 개념(idea)은 있을 것이다. DispatchQueue.main 외에도 이미 global 동시(concurrent) 대기열(queues) 중 하나를 사용했거나, 일련(serially)의 작업을 실행하기 위해 직렬(serial) dispatc..
-
Chapter 16: Error HandlingRaywenderlich/Combine: Asynchronous Programming 2020. 8. 26. 01:21
Version Swift 5.3, iOS 14, Xcode 12 값(values)을 내보내(emit)는 Combine 코드를 작성하는 방법에 대해 많은 것을 배웠다. 하지만 지금까지 작성한 대부분의 코드는 오류(errors)를 전혀 처리(deal with)하지 않고, 대부분 "happy path"를 다뤄왔다는 것을 눈치 챘을 것이다. 오류없는(error-free) 앱을 작성하지 않는 한, 이 장(chapter)은 바로 당신을 위한 것이다. 1장(chapter), "Hello, Combine!"에서 배운 것처럼 Combine publisher는 publisher가 내보낸(emits) 값의 유형을 정의(declares)하는 Output과, 이 publisher가 완료(finish)할 수 있는 실패(failu..
-
Chapter 15: In Practice: SwiftUI & CombineRaywenderlich/Combine: Asynchronous Programming 2020. 8. 17. 13:46
Version Swift 5.3, iOS 14, Xcode 12 SwiftUI는 선언적(declaratively)으로 앱 UI를 구축(building)하기 위한 Apple의 새로운 패러다임(paradigm)으로, 기존(existing)의 UIKit 및 AppKit 프레임 워크(frameworks)와는 상당히(big) 다르다(departure). 사용자 인터페이스(user interfaces) 구축(building)을 위한 매우 간결(lean)하고 읽고(read) 쓰기(write) 쉬운 문법(syntax)을 제공한다. Declarative syntax SwiftUI 구문(syntax)은 작성(build)하려는 뷰(view) 계층(hierarchy)을 명확하게(clearly) 나타낸다: HStack(spac..
-
Chapter 14: In Practice: Project "News"Raywenderlich/Combine: Asynchronous Programming 2020. 8. 16. 05:47
Version Swift 5.3, iOS 14, Xcode 12 지난 몇 장(chapters)에서 Foundation 유형(types)의 Combine 통합(integration)에 대한 몇 가지 실용적인(practical) 적용 방법(applications)에 대해 배웠다. URLSession의 data task publisher를 사용하여, 네트워크(network) 호출(calls)을 수행하는 방법을 배웠고 Combine 등으로 KVO를 구현한(compatible) 객체(objects)를 관찰(observe)하는 방법을 살펴 보았다. 이 장(chapter)에서는 운영자(operators)에 대한 탄탄한(solid) 지식을 사용해 Foundation 통합(integrations)을 이전 "In Prac..
-
Chapter 13: Resource ManagementRaywenderlich/Combine: Asynchronous Programming 2020. 8. 15. 00:54
Version Swift 5.3, iOS 14, Xcode 12 이전(previous) 챕터(chapters)에서는 네트워크 요청(network requests), 이미지 처리(image processing), 파일 디코딩(file decoding)과 같이 작업을 반복(duplicate)하기보다 리소스(resources)를 공유하고자 하는 경우가 있었다. 여러 번 반복(repeating)하는 것을 피할 수 있는 리소스 집약(resource-intensive)적인 작업은 학습할 가치가 있다. 즉, publisher의 작업이 생성(produces)하는 값인 단일 리소스(resource)의 결과를 여러 subscribers간에 공유(share)해야 한다. Combine은 리소스(resources)를 관리(ma..
-
Chapter 12: Key-Value ObservingRaywenderlich/Combine: Asynchronous Programming 2020. 8. 14. 04:31
Version Swift 5.3, iOS 14, Xcode 12 변경(change)에 대처(dealing with)하는 것은 Combine의 핵심(core)이다. Publishers를 구독(subscribe)하면, 비동기(asynchronous) 이벤트(events)를 처리(handle)할 수 있다. 이전(earlier) 장(chapters)에서는 publisher가 새 값(value)을 내보낼(emits) 때마다 지정된 객체(object)의 속성(property) 값(value)을 업데이트(update)할 수 있는 assign(to:on:)에 대해 배웠다. 그러나 단일 변수(variables)의 변경(changes)을 관찰(observe)하는 메커니즘(mechanism)을 구현해야 할 때도 있다. Co..
-
Chapter 11: TimersRaywenderlich/Combine: Asynchronous Programming 2020. 8. 13. 12:42
Version Swift 5.3, iOS 14, Xcode 12 반복(repeating) 및 비 반복(non-repeating) 타이머(timers)는 코딩 시에 항상 유용하다. 코드를 비동기적(asynchronously)으로 실행(executing)하는 것 외에도 작업을 반복(repeat)해야 하는 시기(when)와 빈도(how often)를 제어(control)해야할 필요가 있다. Dispatch 프레임 워크(framework)가 이용(available)되기 전에 개발자는 RunLoop에 의존하여 작업을 비동기적(asynchronously)으로 수행하고 동시성(concurrency)을 구현했다. 그리고 Timer(Objective-C의 NSTimer)를 사용하여, 반복(repeating) 및 비 반복..