iOS

Stanford iOS 한글자막 강의 - MVC 패턴

728x90
 

[무료] Stanford iOS 한글자막 강의 - 인프런 | 강의

한글링의 첫번째 프로젝트 아이오에스는 현재 iTunes에서 공개된 Stanford - Developing iOS 9 Apps with Swift 강의를 번역하였습니다., - 강의 소개 | 인프런...

www.inflearn.com

iOS의 기본개념을 정리하고 싶어서 들은 강의다.

오래된 강의지만 막연하게 머릿속에 있는 기초 개념들을 정리하기에 좋은 강의이다.

강의를 들으면서 글로 작성해보고 싶은 부분을 정리 할 예정이다.

 

MVC 패턴은 무엇일까?

MVC은 코드를 작성하기 위한 디자인 패턴이다. 각각의 단어의 앞 글자만 따서 만든 단어다.

Model은 앱이 실질적으로 무엇을 동작하는지를 정리해 놓은 영역으로 View와 독립적으로 작성해야한다. 

View는 앱에서 보여지는 화면부분이다. 

Controller는 독립적인 View와 Model을 연결해주는 역할을 한다.

Controller는 View에서 어떤 일이 일어났는지(클릭같은 이벤트)를 파악하고 그에 따른 Model을 업데이트한다. Model이 업데이트 되었다면 View의 변화가 생긴다. 이렇게 View와 Model을 이동하면서 인터페이스를 관리하는 곳이 Controller이다.

 

간단히 정리하면 이렇다.

Model: What your application is (but not how it is diplayed) = 계산을 하는부분

Controller: How your Model is presented to the user(UI Logic) = 클릭했을 때 무슨동작하는가, 그런로직

View: Your controller’s minions = 컨트롤러에서 보여주고자 하는 화면


view - controller는 어떻게 서로 의사소통 할까

  • target-action
    • view 에서 controller에서 action을 보내기 위해선 target과 action을 설정함.
  • delegate:
    • should, will, did (scrollView: 스크롤링을 시작했어, 줌 배율을 확대했어같은 복잡한 액션)
  • dataSource:
    • 뷰는 데이터를 가지고 있을 수 없어서 컨트롤러에게 물어보는행위(data at, count ...)

이제야 addAction할 때 target을 지정해주는 이유를 알게 되었다.

설명을 하면,

- controller를 target으로 지정하고, view의 action을 target한테 보내서 처리 할 수 있다.

- delegate 패턴은 필요한 액션(should,will,did)으로 protocol을 설정하고 해당 액션을 controller에서 구현해주는 작업이다.

- view는 자신이 보여주는 데이터를 가지고 있을 수 없음, 뷰는 항상 controller에게 데이터를 물어봄 이런 행위를 delegate로 이뤄지는데 data source라고 부름


model - controller는 어떻게 서로 의사소통 할까

Model: View에게 직접적으로 소통하지 않음.. 앱이 실제로 무엇을 해야하는지에 대한(계산으로 치면, 곱셈, 더하기, 같은 기능들)기능들을 담고있음.

그렇다면 Model은 Controller에게 어떻게 소통할까?

데이터가 변경되면 어떻게하지?

radio station. : 흥미로운 일이 생길 때마다 Model에서 방송함. → 그럼 controller가 그걸 캐치함.

아, Notification으로 처리하는구나.

 

앱은 이런 MVC들이 모여서 거대한 앱이 만들어 지는것임.

MVC를 다른 뷰의 일부라고 생각해야함.


 

아이디어

⇒ Model을 잘 설계하면 중복되는 로직이 없겠구나.

⇒ 주석처리를 Model에서 상세하게 작성해야하겠구나.

 

후기

생각해보니 view영역은 따로 존재하는데 어떻게 controller한테 action을 보내고 ui변경을 어떻게하지?, import UIKit, import Foundation이 뭐지?

그냥 이러면 되나보구나 하는 부분들을  더 자세히 알게되었다.

 

 

 

 

 

 

 

 

 

반응형