목록스위프트 (54)
study record
Scheduler : 프로세스가 있는 곳의 Context (= thread, dispatchQueue) 특정 코드가 실행되는 Context를 추상화한 것이다. Cocoa에서는 Main Queue를 사용하지만 RxSwift에서는 MainScheduler를 사용한다. 연산자 subscribeOn : Observable의 프로세싱이 어디서 일어나게 할 것인지 결정하는 연산자 observeOn : Observer가 Observable을 어디서 observe할 것인지 일반적으로 subscribeOn(:)은 Background Thread에서, observeOn(:)은 Main Thread에서 사용 observeOn vs subscribeOn 다른 스케줄러에서 작업하고자 한다면 observeOn을 사용한다. seq..
클로저란? 클로저는 코드블럭으로 어떤 상수나 변수의 참조를 캡쳐해 저장할 수 있다. 스위프트는 캡처 관련 메모리를 알아서 처리한다. 클로저의 세 가지 형태 전역 함수 : 이름이 있고 어떤 값도 캡처하지 않는 클로저 중첩 함수 : 이름이 있고 관련한 함수로부터 값을 캡쳐할 수 있는 클로저 클로저 표현 : 경량화된 문법으로 쓰여지고 관련된 문맥으로부터 값을 캡쳐할 수 있는 이름이 없는 클로저 클로저에서는 argument label 은 쓰이지 않고 parameter name만 쓰임 closure("Sodeul") closure(name: "Sodeul") //error! 클로저는 익명이지만 함수이므로 1급 객체 함수의 특성을 다 가지고 있다. 클로저를 변수나 상수에 대입할 수 있다. 함수의 파라미터 타입으로 ..
캐싱이란? 캐싱은 재사용될 수 있을만한 자원을 특정 영역에 저장해놓은 것을 의미한다. 캐싱된 데이터가 있다면 추가적인 자원을 소모하지 않고 캐싱 데이터를 가져다 쓸 수 있기 때문에 자원을 절약할 수 있고 애플리케이션의 처리 속도가 향상된다. 모바일 애플리케이션에서 매우 고화질의 이미지를 반복해서 보여주어야 할 때 캐싱이 없다면, 고화질, 고용량의 이미지를 계속해서 다운로드하기 때문에 사용자의 네트워크 리소스를 소모하고, 다운로드 완료까지의 시간동안 사용자는 이미지를 확인할 수 없다. 하지만 다운로드 받은 이미지를 캐싱하여 저장해둔다면, 별도의 리소스를 소모하지 않고 이미지를 빠르게 보여줄 수 있다. 메모리 캐싱 VS 디스크 캐싱 메모리 캐싱은 애플리케이션의 메모리 영역 일부분을 캐싱에 사용하는 것이다. ..
앱 사용시 발생하는 다양한 상황에 적절하게 대응해야 하기때문에 앱 생명주기를 이해하는 것은 중요하다. 앱 실행 main 함수 실행 main 함수가 UIApplicationMain 함수 호출 (App 실행 관리의 중점) UIApplicationMain 함수는 앱의 본체에 해당하는 객체인 UIApplication 객체 생성 싱글톤 객체로 Event Loop에서 발생하는 여러 이벤트들을 감지하고, Delegate에 전달하는 역할을 한다. 예시로 앱이 백그라운드로 갈 때, 메모리 부족 경고를 할 때 등의 상황들을 감지하여 Delegate에 전달한다. @UIApplicationMain 어노테이션이 있는 클래스를 찾아 AppDelegate 객체, SceneDelegate 객체 생성 Scene은 디바이스에서 실행되고..