목록스위프트 (54)
study record
Reactive Programming Reactive Programming은 데이터의 흐름과 변화의 전파와 관련된 선언적 프로그래밍 패러다임이다. 먼저 데이터 흐름을 정의하고 데이터의 변화를 관찰하다 데이터가 변화했을 때 연관되는 함수나 수식을 업데이트하는 방식이다. 이렇게 비동기적 데이터 흐름을 다루는 프로그래밍으로, 데이터의 이벤트나 UI 이벤트가 많이 발생하는 경우에 장점을 가진다. 또한 Reactive Programming은 비동기적 데이터 흐름과 전달에 관한 프로그래밍 패러다임이라고 표현할 수 있다. 이러한 Reactive Programming의 핵심은 모든 것을 비동기적 데이터의 Stream으로 간주하고, 다양한 방법으로 비동기 이벤트를 처리한다. 프로그래머가 직접 절차를 명시하여 처리하는 명..
GCD란? 멀티코어와 멀티 프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 애플이 개발한 기술. 언제 GCD를 사용하게 되는가? 이벤트들을 비동기적으로 처리하지 않으면 메인 스레드에서 데이터를 가져오고 기다렸다가 UI를 업데이트하며 지연이 발생할 수 있다. 데이터베이스에서 데이터를 한번에 지연없이 가져올 수 없는 경우가 발생하기 때문이다. 이렇게 되면 데이터를 가져올 때까지 UI update도 늦어지게 된다. 이러한 경우를 해결하기 위해 GCD를 사용하게 된다. 뿐만 아니라 네트워킹, 이미지 프로세싱 등 많은 작업을 메인 스레드에서 모두 진행하게 되면 User Interface의 대응이 느려지거나 중지가 되기 때문이다. GCD는 비동기 Queue(Dispatch Queue)를 생성하고, 데이터를 G..
순환 참조(retain cycle)이란? 언제 발생하는가? 어떻게 처리해야 하는가? 순환 참조란? 순환 참조는 두 가지 이상의 객체가 서로에 대한 Strong Reference(강한 참조) 상태를 가지고 있을 때 발생하며, 순환 참조가 발생하게 되면 서로에 대한 참조가 해제되지 않기 때문에 메모리에서 유지되며 이로 인해 메모리 릭이 발생하게 된다. 이러한 메모리 누수 문제를 해결하기 위해 weak, unowned reference가 사용된다. 강한 참조 참조의 기본은 강한 참조로, 별도의 식별자를 명시하지 않으면 강한 참조를 한다. ARC가 해당 인스턴스를 해제하지 않고 유지해야 하는 명분을 제공하는 것이다. 인스턴스를 다른 인스턴스의 프로퍼티, 변수, 상수 등에 할당할 때 강한 참조를 사용하면 참조 횟..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/mWH1W/btrvbflV5Hr/fEeEWI08K78YrshozcHAYk/img.png)
Subject Subject란 Observable이자 Observer의 성격을 지니고 있다. Subject는 동적으로 값을 발행할 수 있다. Subject는 구독하고 있는 여러 Observer들에게 값을 발행할 수 있다. Subject는 Observable을 상속하고 있다. 이는 Subject가 Observable이자 Observer라는 것을 의미한다. Observer(관찰자)의 성격을 지니고 있기 때문에 Observable을 구독할 수 있다. Observable이기 때문에 이벤트를 발행할 수도 있다. * view의 유저 인터렉션을 viewModel의 Subject가 구독하고, 구독을 통해 발행된 값을 바탕으로 viewModel에서 비즈니스 로직을 거쳐 가공된 데이터를 View가 구독함으로써 로직을 구성..