728x90
이전까지 배운 내용
- 개발환경 세팅
- iOS 운영체제 특징
- Xcode 프로젝트 종류 및 생성 방법
- Xcode Single View app 프로젝트 기본 구성 파일
- info.plist
- Autolayout
- Hello world 앱
- 코드로 constraint 주는법
- 화면 전환 방법 : push, present
이론
[아키텍처 패턴]
- 아키텍쳐 패턴이란
: 주어진 문맥 안에서 소프트웨어 아키텍처의 공통적인 발생 문제에 대한 일반적인, 재사용 가능한 해결책
소프트웨어 디자인 패턴과 비슷하지만 더 넓은 범위에 속한다. - 아키텍쳐 패턴이 왜 필요할까
: 아키텍처 패턴에 기반 개발은 앱을 위한 견고한 기반을 구축하는데 도움이된다.
초기개발 : MVC --> 그 후 수많은 업데이트, 새로운 Feature 추가 개발, 버그 수정, 새로운 개발자 영입에 따른 통일되지 않은 컨벤션
--> 코드가 난잡해지고 손대기 힘들어 진다.
MVC
- 기본이 되는 패턴이다.
- 간단한 구조의 애플리케이션에 적합하다.
- Apple 이 처음 정의한 아키텍쳐 컨셉이다.
- Model : 비즈니스 로직을 가지고있는 여러가지 클래스들의 모음이다.(비즈니스 모델 + 데이터 모델)
모델들은 데이터들이 바뀌거나 수정될 rule을 정의한다. - View : 사용자가 상호작용하는 user interface이다.
controller에게 받은 데이터를 display 한다. - Controller : model 과 view 사이 중재자이다. model 이 이떻게 view에 표시될지 결정한다. iOS 에서는 UIVIewController 라고 부른다. 주요 기능은 사용자로 부터 View를 통해 입력을 받고 데이터를 model 로 보내는 것이다. 그리고 그 결과를 다시 View 에 표시한다.
MVP
- Model : MVC 의 model 과 동일하다.
- View : MVP 의 View 와 Controller 둘다로 구성된다. View는 유저 인터렉션을 Presenter로 전달한다.
- Presenter : MVC에서 controller 가 Presenter로 바뀐 것이다, Presenter는 View 를 대신하여 모든 사용자 이벤트 처리를 책임진다. Model 계층과 통신하여 데이터를 UI 에 맞는 형식으로 바꾸어 표시한다.
MVVM
- MVC 패턴의 발전된 버전이다.
- View 와 Controller가 MVVM 에서는 View 와 ViewModel 로 바뀐다. (Presentation logic 을 담당한다.)
- ViewModel 은 Model에서 수정된 부분을 자동으로 자신에게 반영한다. 그리고 View는 ViewModel 밀접하게 연결되어 Model 과 ViewModel 사이 통신이 쉽게 되어있다.
- 그 결과 ViewController의 역할이 간단해 지고 가독성과 유지 보수가 쉬워진다.
- Data-Binding in MVVM : MVVM 에서 ViewModel 과 Model 이 어떠한 reference 도 없는데 어떻게 밀접하게 연결된다는 걸까? 답은 데이터 바인딩이다. UI 요소들을 ViewModel의 observable properties에 연결 시키는 것이다.
- iOS는 데이터 바인딩을 기본적으로 제공하지 않지만 나 ReactiveCocoa, Bind같은 라이브러리가 있다.
Viper
- Viper는 iOS 에서 클린 아키텍쳐 접근 방식을 따르는 아키텍쳐 패턴이다.
- Viper는 distinct 하고 각각의 책임이 있는 레이어들로 애플리케이션을 나눈다.
- View : presenter에 의해 대리된 input을 View 에 표시한다.
- Interactor : 비즈니스 로직 부분
- Presenter : View 로부터 입력을 받고 Interactor에게 데이터를 요청한다. Interactor로 부터 데이터를 받아 view logic 을 적용하여 View 에게 데이터를 표시하도록 한다.
- Entity : VIPER에서 가장 작은 요소이다. 여러 데이터 타입들의 encapsulate를 담당한다.
기본 model 객체를 가지고 있다. - Router : 스크린 간의 navigation을 담당한다. 또한 navigation의 순서를 정한다.
- VIPER는 Single Repository principle 을 따른다.
- Router를 통해 스크린간 이동에 일어나는 문제점들을 해결했다.
- VIPER에는 책임 소재가 분명하기 때문에 팀간 개발에 있어서 일어나는 conflict 를 줄여준다.
- separation이 잘되 있기 때문에 TDD 를 더 쉽게 해준다.
다양한 아키텍쳐 패턴 예제
https://github.com/onmyway133/awesome-ios-architecture
실습 : 카카오톡 첫화면 만들기
[UITableView]
- UITableview 특징
- UITableView 구현
- 카카오톡에서 UITableView 사용 하는 View 구현 (친구 리스트)
728x90
'iOS > DSC Study Session' 카테고리의 다른 글
DSC PNU #4 - 4주차 iOS 세션 노트 (0) | 2020.05.29 |
---|---|
DSC PNU #3 - 3주차 iOS 세션 노트 (0) | 2020.05.22 |
DSC PNU #1 - 1주차 iOS 세션 노트 (0) | 2020.05.08 |
DSC PNU #1 - iOS 세션 시작전 준비 (preparation before iOS Study) (2) | 2020.05.07 |
DSC PNU 2기 iOS 세션 계획 (2) | 2020.04.10 |
댓글