Raywenderlich
-
SnapKit for iOS: Constraints in a SnapRaywenderlich/Articles 2020. 9. 10. 02:25
www.raywenderlich.com/3225401-snapkit-for-ios-constraints-in-a-snap SnapKit for iOS: Constraints in a Snap In this tutorial you’ll learn about SnapKit, a lightweight DSL (domain-specific language) to make Auto Layout and constraints a breeze to work with. www.raywenderlich.com Version Swift 5, iOS 13, Xcode 11 이 튜토리얼(tutorial)에서는 자동 레이아웃(Auto Layout) 및 제약 조건(constraints)을 쉽게(breeze) 작업할 수 있는 경량 ..
-
Chapter 2: ObservablesRaywenderlich/RxSwift: Reactive Programming 2020. 9. 10. 01:38
이제 RxSwift의 몇 가지 기본(basic) 개념(concepts)을 익혔으므로, Observable에 대해 자세히 살펴본다. 이 장(chapter)에서는 Observable을 만들고 구독(subscribing)하는 몇 가지(several) 예를 살펴 본다. 일부 observables의 실제 사용 사례(real-world use)는 다소 모호(obscure)해 보일 수 있지만, 중요한(important) 기술(skills)을 습득(use)하고, RxSwift에서 사용할 수 있는(available) observables 유형(types)에 대해 많은 것을 배울 수 있다. 이 책의 나머지 부분에까지 이러한 기술(skills)을 사용할 것이다. Getting started 이 장(chapter)에서는 pl..
-
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 1: Hello, RxSwift!Raywenderlich/RxSwift: Reactive Programming 2020. 8. 31. 16:35
이 책은 RxSwift 라이브러리(library)를 소개(introduce)하고 RxSwift로 반응형(reactive) iOS 앱(apps)을 작성하는 것을 목표로 한다. RxSwift의 정의(definition)는 다음과 같다: RxSwift는 관찰 가능한(observable) 시퀀스(sequences)와 함수 형식(functional style)의 연산자(operators)를 사용하여 비동기(asynchronous) 및 이벤트(event) 기반 코드를 작성하기 위한 라이브러리(library)로, 스케줄러(schedulers)를 사용한 매개 변수화(parameterized)된 실행(execution)을 허용한다. 복잡하게(complicated) 들리더라도 걱정할 필요는 없다. 반응형(reactive)..
-
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) 및 비 반복..