MVC에 대해서 알아보겠다.
MVC
MVC는 Model - View - Controlller 의 약자이다.
IOS 앱의 객체 관계는 MVC 패턴에 기반하고있다.
MVC 패턴이란 소스 코드 설계 기법으로써, 모델 - 뷰 - 컨트롤러로 이어지는 세개의 핵심 구조를 이용하여 애플리케이션을 설계하는 것을 말한다.
모델은 데이터를 담당하고, 뷰는 데이터에 대한 화면 표현을 담당하며, 컨트롤러는 모델과 뷰 사이에 위치하여 데이터를 가공하여 뷰로 전달하고, 뷰에서 발생하는 이벤트를 입력받아 처리하는 역할을 한다.
MVC 각 섹션 동작
Controller - View
Controller는 View에서 생기는 action에 대한 target을 만들어둔다. 그니깐 음.. 콜백이라고 생각하면 될 것 같다.
그 후 action이 발생한 경우 Controller의 target이 그것을 받아 유저가 설정한 작업을 수행한다.
View는 delegate 패턴의 delegate와 datasource를 이용하여 Controller에게 어떤 작업을 수행해야하는지 알리기도 한다.
대표적인 예로 UITableView의 UITableViewDelegate와 UITableViewDatasource를 들 수 있다.
Model
데이터를 저장할 구조체 생성
Controller
이게 코드 전체를 캡쳐를 못해서 이래 했는데.. 같은 파일에 있는거다.
Controller에 보이는 tableView는 view를 담당하고.. 나머진 컨트롤러 영역이다.
위에서 말한 것처럼 UITableViewDataSource 등을 사용해서.. 액션이 들어오면 데이터를 이용하여 View에 뭐 어떻게 뿌려줄거냐? 동작할거냐? 하는 역할이다.
MVC는 장단점이 뚜렷하다.
다른 패턴보다 비교적 코드량이 적어 접근성이 좋고,
접근성이 좋으니 다른 개발자들도 비교적 수월하게 이해를 할 수 있고,
코드량이 적으니 개발이 빨라 소규모 프로젝트에 좋다.
그리고.. 애플에서 베이직 패턴이니깐 ㅋㅋㅋ
하지만 단점으론
장점에서 말한 소규모 프로젝트가 아닌 대규모로 점점 코드량이 방대해진다?
그럼 유지보수가 어려워진다. 컨트롤러 한곳에 때려박은거니깐
그리고 뷰와 컨트롤러가 밀접해 컨트롤러가 뷰의 사이클까지 관리해버리니 둘의 분리가 어렵다.
이런 단점들을 보완한 패턴이 MVVM이다.
'iOS > Swift' 카테고리의 다른 글
IOS Application Lifecycle (2) | 2021.09.09 |
---|---|
[Swift] Control Flow (1) | 2021.09.08 |
[Swift] String and Characters (0) | 2021.08.24 |
[Swift] API Design Guidelines (0) | 2021.08.24 |
[Swift] Optional (2) (0) | 2021.08.19 |
댓글