728x90

 

2월 28일 월요일 / 36일 차

 


 

Part 4

중요 내용 전체 복습

 

 

 

MVVM 복습

 

 

내용 요약
SwiftUI
 
2019년 Apple의 WWDC에서 처음 소개가 되었습니다

기존에는 스토리보드(Storyboard)로 모든 화면의 구축과 흐름을 구성하고 ViewController에서 로직을 구현했지만
SwiftUI는 Swift 언어만으로 간편하고 더 빠르게 사용자 인터페이스를 구현할 수 있게 되었습니다.

선언적 구문을 사용하여 단순하지만 직관적인 구문을 이용하여 화면을 구성할 수 있게 해줍니다

기본적으로 레이아웃에 포함될 컴포넌트와 그 컴포넌트가 속하게 될 레이아웃 매니저의 종류과 속성만 선언해주면 됩니다.

레이아웃의 위치와 컨스트레인트, 렌더링 방식은 swifUI가 효율적인 방법으로 자동으로 처리하게 됩니다.

레이아웃이 선언되고 테스트되는 동안 Xcode에서 제공되는 프리뷰 캔버스를 통해서 프로젝트를 빌드할 필요없이,
실시간으로 변경되는 레이아웃을 확인할 수도 있습니다


RxSwift

구성 요소
 - Observable
    - Rx 코드의 기반
    - T 형태의 데이터 snapshot을 '전달' 할 수 있는 일련의 이벤트를 비동기적으로 생성하는 기능
    - 하나 이상의 observers가 실시간으로 어떤 이벤트에 반응
    - 세 가지 유형의 이벤트만 방출
 - Operator
    - 주로 비동기 입력을 받아서 출력만 생성하기 때문에 퍼즐처럼 자신들끼리 조합하고 결합할 수 있다
 - Scheduler


Observable
 - Rx의 심장
 - Observable = Observable Sequence = Sequence
 - 비동기적(asynchronous)
 - Observable 들은 일정 기간 동안 계속해서 이벤트를 생성(emit)
 - marble diagram: 시간의 흐름에 따라서 값을 표시하는 방식
 - 참고하면 좋을 사이트: RxMarbles
 - next(element) : element를 감싸서 내뿜는 이벤트
 - error(Swift.Error) : Error를 발생하고 해당 Observable을 종료시켜서 이 후에 더 이상 이벤트가 발생하지 않게 함
 - completed : 해당 Observable이 종료되고 더 이상 이벤트가 발생하지 않음


Single
 - Success 또는 Error 이벤트를 한번만 방출하는 Observable

Maybe
 - 성공적으로 Complete 되더라도 아무런 값을 방출하지 않는 형태의 Complete을 포함함

Completable
 - Completed 또는 Error 만 방출함
 - Completable Create를 이용하여 생성 (Single이나 Maybe처럼 as로 Observable을 변환할 수 없음)
 - 어떠한 값도 방출하지 않음
 - 동기식 연산의 성공 여부를 확인할 때 유용함

Subject
 - Observable이자 Observer
 - PublishSubject : 빈 상태로 시작하여 새로운 값만을 subscriber에 방출한다
 - BehaviorSubject : 하나의 초기값을 가진 상태로 시작하여, 새로운 subscriber에게 초기값 또는 최신값을 방출한다
 - ReplaySubject : 버퍼를 두고 초기화하며, 버퍼 사이즈 만큼의 값들을 유지하면서 새로운 subscriber에게 방출한다

Filtering Operator
 - .next이벤트에 조건부 제약 조건을 적용해 처리하고자 하는 요소만 받을 수 있도록 할 수 있다

Transforming Operator

Traits
 - Single
 - Maybe : Single과 유사하지만 completed 이벤트까지 포함함
 - Completable : complete와 failure만 가짐

subject
 - PublishSubjext<T>() : 이벤트를 내뿜다가 Subscribe가 나타나면 그 시점 이후에 발생한 이벤트만 전달하는 개체
 - BehaviorSubject<T>(value: T) : 초기값을 가짐, Subscribe가 나타나면 이후에 발생한 이벤트를 전달함 뿐만 아니라 발생한 시점 이전의 값까지 전달
 - ReplaySubject<T>.create(bufferSize: Int) : 버퍼 사이즈 만큼의 저장소를 가지고 있어서 뒤늦게 나타난 이벤트여도 버퍼 사이즈 만큼의 이벤트를 전달하고 이후의 이벤트도 전달함

Filtering Operators (방출한 값을 받아 다양한 규칙으로 걸러냄 )
 - Filter : 클로저 내부의 true, false로 나타낼 수 있는 조건문을 작성하고, 조건문의 true로 대응하는 값만 결과로 전달함

Transforming Operators (방출한 값을 받아 원하는 형태로 다양하게 변형하여 결과로 나타냄)
 - Map : hint타입의 element를 내뿜는 Observable의 이벤트를 받아서 String으로 바꿔서 결과를 내보냄

Combining Operators (Filtering, Transforming Operators 처럼 Sequence의 출력값을 핸들링해서 결과값을 내뿜는다는 점에서는 동일하지만 여러가지 Sequence를 조합한다는 점에서 다름)

Time Based Operators (시간에 따라 Sequence의 이벤트 방출이나, Subscribe을 제어하는 Operators)

RxCocoa (Cocoa 프레임워크를 Rx로 감싸은 것)

MVVM
 - Model
     - MVVM 아키텍쳐에서 Model은 데이터 구조를 정의하고 ViewModel에게 결과를 알려준다.
        여기서의 Model은 View와 이어지지 않는다.
 - View
     - MVVM의 View는 흔히 사용하는 ViewController에 코드를 작성한다.
        view는 사용자와의 상호작용을 통해 이벤트가 일어나면 ViewModel에게 알려주며,
        ViewModel이 업데이트 요청한 데이터를 보여준다.
 - ViewModel
     - ViewModel은 사용자의 상호작용을 view가 보내주면 그에 맞는 이벤트를 처리하고,
        Model의 Read Update Delete를 담당한다.

 

 


 

 

RxSwift Observable 복습

 

 

복습할 내용

 

- SwiftUI

 - Git

 - RxSwift

 - RxCocoa

- MVVM

 

 

 

 

오늘의 공부 후기

 

오늘은 Part 4 마지막 총정리 복습 시간을 가졌습니다.

기존에 나온 내용들도 중요하고 필요한 내용이었지만

Part 4에서 그동안 나왔던 내용을 응용한 앱들이 많았고 중요 내용도 많아서 확실하게 집고 가고 있습니다.

 

SwiftIUI, Git, RxSwift, RxCocoa, MVVM 등 중요 내용이 상당히 많습니다.

주로 코딩하면서 쓰는 것은 Swift이지만 4장에서 나온 내용들이 기업에서 우대하는 사항이기도 하며

제대로 알고 넘어가야 나중에 직접 사용할 때도 문제가 없을 것 같다는 판단하에 

3일이라는 시간을 복습을 하며 보냈습니다.

 

지금 당장은 이해하기 어렵고 사용하기 어렵더라도 

언젠가는 복습한 내용이 유용하게 쓰였으면 좋겠습니다.

 

 

 

 

 

 

https://bit.ly/37BpXi

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

 

 

728x90

+ Recent posts