분류 전체보기 67

RxViewController

RxViewController UIViewController를 생명주기를 RxSwift와 결합해 사용할 수 있는 라이브러리 기존 viewWillAppear, viewDidLoad등 UIViewController의 Lifycyle함수를 쉽게 사용하는 syntax sugar devxoul님이 만드신 오픈소스 라이브러리 RxViewController 구현부 RxViewController가 어떻게 구현되어 있는지 확인해보자 #if os(iOS) || os(tvOS) import UIKit import RxCocoa import RxSwift public extension Reactive where Base: UIViewController { var viewDidLoad: ControlEvent { let sou..

RxSwift 2022.03.03

The Composable Architecture(TCA)

The Composable Architecture(TCA) pointfree에서 Brandon Williams와 Stephen Ceils가 만들어낸 아키텍처 상태관리, Composition, Side Effect, Testing하게 설계할 수 있는 아키텍처 SwiftUI, UIKit을 지원하고 다른 Apple Flatform(macOS, tvOS, watchOS)에서 사용가능 내부적으로 Combine으로 구성되어 있음(Store...) SPM으로 설치 Composable Architecture 구성 이해하기 State: 로직을 수행하고 UI를 렌더링을 수행하기 위해 필요한 데이터 타입 Action: 사용자 작업, 알림, 이벤트 소스등 기능에서 발생할 수 있는 모든 타입 Environment: API cl..

swift 2022.03.02

Memory Debugging(leak Test)

Memory Debugging ios에선 메모리 관리를 유의해야 한다. 특히 ARC를 사용한 메모리 자동 참조/해제를 하기 때문에 컴파일 타임때 효과적인 메모리 관리를 할순 있지만 retain cycle에 의한 해제되지 못한 메모리들은 앱에 계속 남아있어 메모리누수가 발생할 수 있다. Xcode에서 메모리를 분석할 수 있는 여러 방식들이 있다. Xcode Memory Graph Debugger 현재 사용중인 memory에 대해 Footprint를 확인할 수 있다. 앱의 전체 메모리 사이즈에 대한 그래프를 실시간으로 확인할 수 있다. 하단의 debug memory graph버튼을 클릭해 memory graph도 확인할 수 있다. 왼쪽에서 현재 메모리에 포함되어 있는 객체들과 해당 클래스의 인스터스 및 주소..

swift 2022.02.20

Merge Sort

Merge Sort(병합 정렬) 두부분으로 쪼개는 작업을재귀적으로 반복한뒤 분리한 순서와 반대로 크기가 작은 값부터 병합해 나가는 분할정복 알고리즘 시간복잡도 O(nlogn) Merge Sort(병합 정렬) 순서 리스트를 반으로 나눈다(Divide) 왼쪽 리스트와 오른쪽 리스트를 각각 정렬(Conquer) 정렬된 두 리스트를 하나의 정렬된 리스트로 합병(Combine) func mergeSort(_ list: [Int]) -> [Int] { if list.count

Algorithm 2022.02.16

Accessing User Data and Resources

Accessing User Data and Resources 유저의 개인정보는 매우 중요하다. 사람들이 앱을 신뢰할 수 있도록 하려면 필요한 개인정보 보호 관련 데이터, 리소스, 사용방법을 투명하게 공개하는 것이 중요하다. 예를 들어 다음의 액세스 권한을 요청해야 한다. 위치, 건강, 재무, 재정, 연락처 및 기타 개인 식별 정보를 포함한 개인 데이터 이메일, 메세지, 캘린더 데이터, 연락처, 게임 플레이 정보, Apple Music, HomeKit데이터, 오디오, 비디오 및 사진 콘텐츠와 같은 사용자 생성 콘텐츠 Blutooth, 홈 자동화, Wi-Fi 연결, 로컬 네트워크 사용과 같은 보호된 리소스 카메라와 마이크 기능 Important ios14.5, iPadOS14.5에선 사용자를 추적하거나 기기..

HIG 2022.02.16

Handling Location Events in the Background

Handling Location Events in the Background 백그라운드 실행 모드를 활용하여 위치 관련 이벤트에 응답 Overview 앱은 보통 foreground상태에서 위치 서비스를 사용한다, 하지만 몇몇 위치 서비스는 백그라운드에서 실행되거나 시스템이 앱을 실행하게 할 수도 있다. 백그라운드에서 이벤트를 받으려면 아래와 같이 Xcode에서 "Location updates"기능을 설정해라. 또한 CLLocationManger개체의 allowsBackgroundLocationUpdates속성을 true로 설정해야 한다. 앱의 백그라운드 상태에서 위치가 갱신될 때, 시스템은 앱을 실행하고 options dictionary를 application(_: willFinishLaunchingWi..

공식문서 2022.02.11

Operator

Operator Operator를 통해 발행된 이벤트들을 조건을 걸어 원하는 이벤트로 전달 가능 Swift Collection의 filter와 비슷한 개념 Ignoring Operator Filter Bool을 리턴하는 클로저를 받아 Observable Event확인 클로저안 조건을 만족하는 이벤트만 방출 let disposeBag = DisposeBag() Observable.of(1, 2, 3) .filter { $0 < 3 } .subscribe(onNext: { print($0) }) .disposed(by: disposeBag) // 1 // 2 ignoreElements .next 이벤트를 무시 종료 이벤트는 전달(.error, .complete) 시퀀스의 종료 시점만 확인 가능 let dis..

RxSwift 2022.02.09

Subject

Subject Observable(이벤트 발행)과 Observer(구독)모두 동작가능한 타입 동적으로 값을 발행 가능 발행하는 동시에 수동으로 값을 관찰가능 Observable 및 관찰 가능한 ObserverType을 채택하고 있다. MVVM구조에서 User Interaction에 의한 이벤트를 viewModel의 Subject가 구독하고, 구독을 통해 발행된 값을 View가 구독함으로 써 MVVM동작 연결 가능 Observable과 Subject의 차이 Subject는 Observable과 Observer역할을 모두가능 Observable은 Unicast방식으로 observer하나만을 subscribe Subject은 Multicast방식(여러 Observer에게 이벤트 발행 가능) 네트워크 요청 Ob..

RxSwift 2022.02.08

Observable

Observable Observable이란 여러 이벤트들을 생성(emit) 할 수 있는 대상(발행자, Publisher) Observable타입을 이용해서 관찰 가능한 흐름이 생성. 즉 Observable타입을 이용해서 관찰하고 들어온 값을 처리 Observer(구독자) Observable(발행자)를 구독하는 형태 Observe결과 이벤트 스트림을 Sequence라고도 칭함 Observable의 이벤트 next: 항목을 계속 방출하는 기능. 즉 이 이벤트를 받아서 원하는 형태로 처리. complete: 성공적으로 next이벤트가 완료되었을 때, complete 이벤트가 발생. 이벤트 발생 후 스트림 종료 error: 값을 발행하다 에러가 발생한 경우 error이벤트를 발생하고 스트림 종료 Observab..

RxSwift 2022.02.07

RxSwift란?

ReactiveX란? https://reactivex.io/ ReactiveX CROSS-PLATFORM Available for idiomatic Java, Scala, C#, C++, Clojure, JavaScript, Python, Groovy, JRuby, and others reactivex.io ReactiveX는 obsevable sequence를 사용하여 비동기 및 이벤트 기반 프로그램을 구성하기 위한 라이브러리 observer pattern을 사용하여 여러가지 기능 문제를 해결해주는 operator들을 지원 함수형 프로그래밍(FP)에 반응형 프로그래밍(Reactive Programming)이 더해져 FRP프로그래밍을 지원 RxSwift는 ReactiveX를 도입한 Swift 개발을 위한..

RxSwift 2022.02.07