본문 바로가기

전체 글

(67)
iOS) UIResponder와 Responder Chain UIResponder ➤ 이벤트에 응답하고 처리하기 위해 추상화된 인터페이스 class UIResponder : NSObject UIResponder가 익숙하다면 UIView가 상속받는 객체이기 때문일 것이다. class UIView : UIResponder Responder 객체는 UIResponder에서 상속된 클래스들의 인스턴스이며, 이벤트 핸들링을 위한 인터페이스와 responder들의 기본행위를 정의한다. UIApplication, UIViewController, UIView, UIWindow 등 많은 객체들이 채택하고 있으며, 모든 UIView 객체의 상위 클래스에 해당한다. 이벤트 핸들링 Responder 객체가 이벤트를 핸들링하는 방식은 크게 두 가지로 나뉜다. 전달 받은 이벤트를 처리하거..
iOS) Core Data 단일 장치에서 데이터를 유지•캐싱하고 변경 사항을 되돌릴 수 있도록 한다. 코어 데이터를 사용하여 오프라인에서의 사용을 위해 데이터를 영구적으로 저장할 수 있고 임시 데이터를 캐싱할 수 있다. 코어 데이터의 데이터 모델 에디터를 통해 데이터의 타입과 관계를 정의하고 각 클래스의 정의를 생성할 수 있다. 코어 데이터는 런타임에 개체 인스턴스를 관리하여 다음의 기능을 제공할 수 있다. 전반적인 기능 소개 Persistence 코어 데이터는 저장소에 각 객체를 매핑하는 세부적인 내용을 추상화하여 직접적으로 DB를 관리할 필요 없이 Swift나 Object-C를 통해 데이터를 저장할 수 있도록 한다. Undo and Redo of Individual or Batched Changes 코어 데이터의 실행 취소 매..
iOS) Dispatch (GCD) Dispatch [Framework] 멀티코어 하드웨어에서 코드를 동시에(concurrently) 실행시키도록 도와주는 프레임워크 Grand Central Dispatch(GCD)로 알려졌으며, 시스템 수준에서 관리되는 dispatch queues를 이용한다. 하나의 애플리케이션이 멀티코어를 효과적으로 사용하기는 어렵다. GCD는 시스템 레벨에서 작동하므로 모든 작동중인 애플리케이션에 대해 이용 가능한 시스템 자원을 적절하게 연결시켜줄 수 있다. DispatchQueue [Class] 작업을 실행할 때 맵의 메인 스레드나 백그라운드 스레드에서 순차적(serial) 또는 동시적(concurrent)으로 실행하도록 관리하는 객체 DispatchQueue는 FIFO Queue이다. 작업은 block objec..
iOS) Scene-Based Life-Cycle 애플 공식 문서 Managing Your App's Life Cycle를 기반으로 작성합니다. Scene 기반 앱 생명주기 앱은 Foreground나 Background에 있을 때 시스템 알림에 응답하고 다른 중요한 시스템 관련 이벤트를 처리한다. 앱의 현재 상태에 따라 할 수 있는 것과 없는 것이 결정되는데, 예를 들어 foreground 앱은 사용자와 상호작용 하므로 CPU를 포함한 시스템 리소스에 대해 우선권을 갖는다. 반대로 background 앱은 화면 밖에 있기 때문에 가능한 적은 일을 하고 가급적 아무 일도 안해야 한다. 앱의 상태가 바뀜에 따라 그에 맞춰 동작을 조정해야 한다. 앱의 상태가 변하면 UIKit은 그에 맞는 delegate 객체의 메소드를 호출하여 알려준다. UISceneDel..
iOS) RxSwift 가볍게 훑어보기 (3) just, of, from Observable 생성 연산자 just 하나의 항목을 방출하는 Observable 생성 ObservableType 프로토콜의 Type Method이다. just로 생성한 Observable은 파라미터로 전달한 요소를 그대로 방출한다. let disposeBag = DisposeBag() let element = "🌝" Observable.just(element) .subscribe { event in print(event) } .disposed(by: disposeBag) Observable.just([1, 2, 3]) .subscribe { event in print(event) } .disposed(by: disposeBag) 위 코드를 실행하면 다음과 같이 나온다. next(🌝) completed..