Cache, NSCache, URLCache Cache(캐시) Cache 란 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 저장소를 가르킨다. IOS 파일 시스템에서는 Library 내부에 위치하며 백업이 불가능하다. 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다. 반복적으로 서버에서 동일한 데이터를 받아와야 하는경우 캐시를 활용하면 효율적이게 된다. Cache 를 사용한다는것은 반복적으로 동일한 데이터를 서버에서 불러오는 경우 서버에 데이터를 요청하는 것이 아니라 메모리에 데이터를 저장했다가 불러다 쓰는것을 의미한다. 서버에서 데이터를 받아오는것보다 메모리에서 가져오는것이 더빠르기때문에 성능의 이점이 있다. 이때 원하는 데이터가 캐시에 존재할경우 Cache Hit 이라고하며 원하는 데이..
RxSwift ErrorHandling ErrorHandling 앱에서 발생하는 가장 흔한 에러들은 다음과 같다. 인터넷 연결 없음: 아주 흔한 에러 중 하나다. 만약 앱이 인터넷 연결을 통해 데이터를 받아와야하는데 기기가 오프라인 상태가 된다면, 이를 감지하고 적절한 대응을 해줘야 한다. 잘못된 입력: 때에 따라서 정해진 폼에 따라서 입력값이 필요한 경우가 있다. 하지만 사용자는 언제든지 잘못된 값을 입력할 수 있다. 전화번호 입력란에 숫자대신 글자를 입력하는 사용자는 언제나 있을 수 있다. API 또는 HTTP 에러: API를 통한 에러는 아주 광범위하게 일어난다. 표준 HTTP 에러(400 또는 500 에러)를 통해 표시되거나 JSON 내 status 필드를 통해 표시될 수 있다. RxSwift에서..
RxSwift Combining Operators Combining Operators 다양한 방법으로 sequence들을 모으고, 각각의 sequence내의 데이터들을 병합하는 방법을 배워보자. observable로 작업할 때 가장 중요하게 확인해야 할 것은 observer가 초기값을 받는지 여부다. .startWith() 요녀석은 초기값을 갖는 옵저버블 이라고 할수있겠다. 이벤트가 발생되어 next로 방출될때 초기값을 방출한후 전달된 이벤트들을 방출할수 있게된다. 네트워크 연셜 상태 같이 현재 상태가 필요한 상황에 요녀석을 사용해 현재 상태를 초기값으로 붙여줄수 있겠다.let numbers = Observable.of(2, 3, 4) let observable = numbers.startWith(1) ..
RxSwift2 Observable Observable Observable은 이벤트 시퀀스를 비동기적으로 생성하는 기능을 가지고 있다. observable, observable sequence, sequence 모두 같은 말이다. 중요한것은 이 모든 것들이 비동기적()이라는 것 이다. 이 때 Observable이 지속적으로 이벤트를 발생시키는 것을 emit(방출)이라고 한다. 1. Observable의 LifeCycle next를 통해 1, 2, 3을 방출하는 Observable 세번의 tap 이벤트를 방출한뒤 Complete를 통해 종료된 Observable 1, 2를 방출하고 에러가 발생해 error를 통해 종료된 Observable 이전글에 작성한것처럼 여기서 next, error, complete..
RxSwift3 Subjects, Relay Hot Observable vs Cold Observable 언제 이벤트들이 방출 되는지에 따라 Observable을 두가지로 분류할 수 있다. 두가지의 차이점은 다음과 같다. 구독할 시 데이터를 처음부터 발행 여부 이벤트 발생 시점 스트림 분기 성질 Hot Observable Observable을 생성하고 일정 시간이 지난 상태에서 subscribe하면 처음 데이터를 받는 것이 아닌 중간부터 방출된 데이터를 받을 수 있게된다. 구독 여부와 상관없이 데이터를 방출합니다. 데이터를 처음부터 발행하는 것이 아닌 구독 시점에서 방출되는 값을 받기 시작합니다. 스트림을 분기하는 성질이 있다. 마우스, 키보드, 시스템 이벤트와 같은 UIEvent, 타이머, 멀티 캐스팅..
RxSwift 시작하기 RxSwift란? RxSwift is a library for composing asynchronous and event-based code by using observable sequences and functional style operators, allowing for parameterized execution via schedulers. By Marin Todorov. ‘RxSwift — Reactive Programming with Swift.’ RxSwift는 코드를 새로운 데이터에 반응하며 순차적으로 처리하게 함으로써 비동기 프로그래밍을 쉽게하도록 도와준다. UIKit에서의 비동기 프로그래밍 대부분의 Class에서는 비동기로 작업을 수행하고 모든 UI 구성은 기본적으로..
App Bundle의 구조와 역할 Bundle 번들은 크게 App Bundle, FrameWork Bundle, Loadable Bundle 세가지로 나눌 수 있다. 1. App Bundle 실행될수 있는 executable과 executable을 설명하는 Info.plist 파일 그리고 executable에서 사용되는 launch 이미지를 포함한 asset과 자원, 인터페이스 파일, string파일, 데이터 파일로 이루어져 있다. 2. FrameWork Bundle dynamic shared library 라 불리는 동적 공유 라이브러리에서 사용되는 코드와 자원을 포함하고 있다. 3. Loadable Bundle 앱의 기능성을 확장시켜주는 실행 가능한 코드와 자원을 포함하고 있고 플러그인이 대표적인 예..
ARC, RC, 강한 순환 참조에 대해서 설명하시오. 🔑 핵심 내용: ARC는 컴파일 타임에 retain, release 코드를 삽입 하여 메모리를 관리한다. ARC ARC(Automatic Reference Counting)란 앱의 메모리 사용량을 추적하고 관리하는 도구로써 참조 타입 인스턴스가 더이상 필요하지 않을때 인스턴스에 할당된 메모리를 자동으로 해제 하여 메모리를 관리 합니다. 예전 Obj-C 에서는 retain, release 키워드를 작성하여 참조타입의 RC증가 및 감소 하도록 관리 하였는데, ARC는 retain, release 키워드를 컴파일타임에 자동으로 삽입하도록 하여 개발자가 메모리 관리 이슈를 줄이고 코딩 자체에 집줄 할 수 있도록 도와주는 역할을 하게 되었습니다. RC refe..