iOS Dev/Reactive

    반응형 (Reactive) 프로그래밍을 위한 기초 지식 - 2 (Asynchronous)

    비동기 처리 ( Asynchronous ) 코드 실행 결과를 기다리지 않고 바로 다음 코드를 실행하는 병렬 처리 방식을 말합니다. 클라이언트에서 서버로 요청을 보냈을 때, 서버가 언제 요청을 줄지 모르기 때문에 비동기 처리가 필수적입니다. 만약 네트워킹 코드를 "동기적" 으로 작성했을 때에는 아래와 같이 응답(다운로드)이 완료될 때 까지 UI 가 멈추게 됩니다. ( Main Thread 에서 UI 를 update 하는데, 병목 현상이 걸리는 모습 ) Swift 는 비동기 처리를 위해 아래와 같은 API를 사용할 수 있습니다. GCD ( Grand Central Dispatch ) - 멀티 코어와 멀티 프로세스 환경에서 최적화된 프로그래밍을 할 수 있도록 애플에서 개발한 기술 - 성능이 중요한 작업에 효율..

    반응형 (Reactive) 프로그래밍을 위한 기초 지식 - 1 (Functional Programming)

    함수형 프로그래밍 ( Functional Programming ) 수학적 함수를 중심으로 개발하여 "Side-Effect" 를 최소한으로 하는 프로그래밍 패러다임 명령형 프로그래밍을 할 때 사용하는 Function 은 실제로 수학의 함수의 다른점이많습니다. 이유는 외부 요인에 의하여 Return 값이 변경 될 수 있기 때문입니다. 이를 Side-Effect 라고 합니다. Side-Effect 가 커질수록 소프트웨어의 불확실성이 높아지고, 심각한 버그를 발생시킬 가능성이 높아집니다. 이에 따라 Pure Function 이라는 개념이 등장하게 됩니다. 직역하면 "순수 함수" 로서 수학의 함수와 동일하게 동일 인자에 대해서 같은 출력값을 가지게 됩니다. 또한 아래와 같은 Immutable 데이터를 참조하여도 ..