목록분류 전체보기 (179)
study record
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dPQNII/btrvxjC1dhS/0r3Tz5ElQVKRbspuqmj3K1/img.png)
AppDelegate AppDelegate는 App(application)이 해야할 일을 대신 구현한다는 의미이다. 앱이 해야할 일이란 백그라운드 진입, 포그라운드(Foreground) 진입, 외부에서의 요청 등이 있다. 1. 앱의 데이터 구조 초기화 2. 앱의 scene을 환경설정(Configuration) 하는 것 3. 앱 밖에서 발생한 알림(배터리 부족, 다운로드 완료 등)에 대응 4. 특정 scene, view, view controllers에 한정되지 않고 앱 자체 타겟이벤트에 대응 5. 애플 푸시 알림 서비스와 같이 실행 시 요구되는 모든 서비스 등록 AppDelegate 클래스 위에는 @main 어노테이션이 있다. 이 어노테이션으로부터 UIApllication이 AppDelegate가 본인의..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bJLq1x/btrvxj242q8/894pVv73XPbBojl0hpXInk/img.png)
클로저란? 어떤 기능을 하는 코드를 하나의 블럭으로 모아놓은 것이다. 함수도 클로저의 한 형태이다. 클로저의 큰 특징은 클로저가 선언된 위치에서 어떤 상태를 캡쳐하고 참조를 얻을 수 있다는 것이다. 탈출 클로저 Escaping Closure 탈출 클로저란 @escaping 가 붙은 클로저로 함수가 반환된 후 밖에서 실행시키는 클로저이다. 이를 활용하여 기존에 있던 함수 범위 내부의 자원들을 활용해서 비동기적 작업을 할 수 있다. 함수의 매개변수로 클로저를 전달하고, 전달받은 클로저를 실행하여 함수를 탈출한다. Swift에서는 함수의 파라미터로 전달된 클로저는 기본적으로 "함수 내부 스코프 안에서만" 사용이 가능하다. 기본 클로저는 함수 내부를 탈출할 수 없다는 의미에서 "탈출 불가"속성을 가지고 있다. ..
Reactive Programming Reactive Programming은 데이터의 흐름과 변화의 전파와 관련된 선언적 프로그래밍 패러다임이다. 먼저 데이터 흐름을 정의하고 데이터의 변화를 관찰하다 데이터가 변화했을 때 연관되는 함수나 수식을 업데이트하는 방식이다. 이렇게 비동기적 데이터 흐름을 다루는 프로그래밍으로, 데이터의 이벤트나 UI 이벤트가 많이 발생하는 경우에 장점을 가진다. 또한 Reactive Programming은 비동기적 데이터 흐름과 전달에 관한 프로그래밍 패러다임이라고 표현할 수 있다. 이러한 Reactive Programming의 핵심은 모든 것을 비동기적 데이터의 Stream으로 간주하고, 다양한 방법으로 비동기 이벤트를 처리한다. 프로그래머가 직접 절차를 명시하여 처리하는 명..
GCD란? 멀티코어와 멀티 프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 애플이 개발한 기술. 언제 GCD를 사용하게 되는가? 이벤트들을 비동기적으로 처리하지 않으면 메인 스레드에서 데이터를 가져오고 기다렸다가 UI를 업데이트하며 지연이 발생할 수 있다. 데이터베이스에서 데이터를 한번에 지연없이 가져올 수 없는 경우가 발생하기 때문이다. 이렇게 되면 데이터를 가져올 때까지 UI update도 늦어지게 된다. 이러한 경우를 해결하기 위해 GCD를 사용하게 된다. 뿐만 아니라 네트워킹, 이미지 프로세싱 등 많은 작업을 메인 스레드에서 모두 진행하게 되면 User Interface의 대응이 느려지거나 중지가 되기 때문이다. GCD는 비동기 Queue(Dispatch Queue)를 생성하고, 데이터를 G..